新手學(xué)用A函數(shù)編程.請(qǐng)幫助看一下邏輯性 [開(kāi)拓者 TB]
- 咨詢內(nèi)容:
本帖最后由 xiaosong 于 2013-7-20 12:01 編輯
我用交易開(kāi)拓者幾天,這個(gè)軟件的確能解決執(zhí)行力的問(wèn)題,但是坑爸的事,編程的確有一點(diǎn)難.
下面是我的思維(才學(xué)習(xí)幾天,如何止損原碼看不懂,還是日內(nèi)時(shí)間控制也是搞不清楚)
1:如果A>B是開(kāi)多條件
2: 如果A<B是平多條件
3:如果C>D是開(kāi)空條件
4:如果C<D是平空條件
固定交易一手.
對(duì)信號(hào)消失的處理
1:如果開(kāi)多信號(hào)出現(xiàn)后,信號(hào)又消失,也開(kāi)倉(cāng),如果再出現(xiàn)開(kāi)多信號(hào)就不開(kāi)多倉(cāng). 如果出現(xiàn)反向的開(kāi)空信號(hào)就,就平多倉(cāng),開(kāi)空倉(cāng)
2:開(kāi)空也是一樣如處理了
bigen
................................
..................................
if(A_TotalPosition()=0) \\返回當(dāng)前公式應(yīng)用的帳戶下當(dāng)前商品的總持倉(cāng) (無(wú)持倉(cāng))
{
IF(A>B) \\開(kāi)多條件
{
if(A_BuyPosition()=0) \\返回當(dāng)前公式應(yīng)用的帳戶下當(dāng)前商品的買入持倉(cāng) \\沒(méi)有多倉(cāng)持倉(cāng) ( 我想了一下,前面的入口是沒(méi)有持多倉(cāng)空倉(cāng),才能進(jìn)來(lái).所以,這里是不是,滿足了開(kāi)多條件,直接開(kāi)多倉(cāng)了?不要這個(gè)IF)
{
A_SendOrder(..........) \\針對(duì)當(dāng)前公式應(yīng)用的帳戶、商品發(fā)送委托單 \\開(kāi)倉(cāng)一手
}
}
} els IF(C>D) \\ 開(kāi)空條件
{
IF(A_SellPosition()=0) \\\\返回當(dāng)前公式應(yīng)用的帳戶下當(dāng)前商品的賣出持倉(cāng) \\沒(méi)有持空倉(cāng) (( 我想了一下,前面的入口是沒(méi)有持多倉(cāng)空倉(cāng),才能進(jìn)來(lái).所以,這里是不是,滿足了開(kāi)空條件,直接開(kāi)多倉(cāng)了?不要這個(gè)IF)
{
A_SendOrder(..........) \\針對(duì)當(dāng)前公式應(yīng)用的帳戶、商品發(fā)送委托單 \\開(kāi)空倉(cāng)一手
}
}
}else if(A_BuyPosition()!=0) \\ 有多倉(cāng)的情況
{ IF(C>D) \\ 開(kāi)空條件 \\ 有持多倉(cāng)的情況,出現(xiàn)了開(kāi)空信號(hào)處理
{
A_SendOrder(..........) \\平多倉(cāng)
A_SendOrder(..........) \\開(kāi)空倉(cāng)
} else if( 開(kāi)多倉(cāng)的價(jià)格-k最高價(jià))>=20) \\\止損 在持多倉(cāng)的情況,如果下跌,下跌超過(guò)20點(diǎn)止損
{ A_SendOrder(..........) \\平多倉(cāng)
} else if(A<B) \\平多條件 ,在持多倉(cāng)的情況,如果上跌,達(dá)到平多條件平倉(cāng)
{
A_SendOrder(..........) \\平多倉(cāng)
}
} else if( A_SellPosition()!=0)\\ 有空倉(cāng)的情況
{
IF(A>B) \\開(kāi)多條件 有持空倉(cāng)的情況,出現(xiàn)了開(kāi)多信號(hào)處理
{ A_SendOrder(..........) \\平空倉(cāng)
A_SendOrder(..........) \\開(kāi)多倉(cāng)
} else if(開(kāi)空倉(cāng)的價(jià)格-k最低價(jià))>=-20) \\\止損 在持空倉(cāng)的情況,如果上跌,上漲超過(guò)20點(diǎn)止損
{ A_SendOrder(..........) \\開(kāi)空倉(cāng)
} else If( C<D) \\是平空條件 在持空倉(cāng)的情況,如果下跌,達(dá)到平空條件平倉(cāng)
{
A_SendOrder(..........) \\平空倉(cāng)
}
}
end
各位大哥,我是新人,請(qǐng)指教小弟,看一下有沒(méi)有什么邏輯性錯(cuò)誤了...
謝謝 - TB技術(shù)人員:
還有幾個(gè)問(wèn)題請(qǐng)教.
1:如開(kāi)盤后15后才交易,收盤前14.55平倉(cāng).
(1):網(wǎng)上有原碼,我也看不懂。請(qǐng)教
要把原碼放在那里了?????????????????????????????????????????????????????
2:Return;
在網(wǎng)上,有一些函數(shù)加得有Return; Return;是返回
(1)加與不加有什么差異?
(2):我上面要加嗎?
- TB客服:
本帖最后由 xiaosong 于 2013-7-20 15:32 編輯
又經(jīng)過(guò)幾個(gè)小時(shí)的奮斗,搞出來(lái)的止損,日內(nèi)時(shí)間控制,與收盤前平倉(cāng).
那位朋友來(lái)看一下有錯(cuò)誤嗎?
Params
Numeric Lots(1);單次開(kāi)倉(cāng)手?jǐn)?shù)
Numeric tradBegin(930); 開(kāi)倉(cāng)時(shí)間
Numeric tradEnd(1456); 開(kāi)倉(cāng)截止時(shí)間
Numeric mycputime(14.58); //電腦時(shí)間 收盤前平倉(cāng)
Numeric N(2); //相對(duì)買賣盤的偏移值
Numeric K(0); //0為多空都平;1為只平多單;-1為只平空單
bigen
................................
..................................
if(Time>=0.0001*tradBegin And Time<=0.1500) if( CurrentTime*100 >=tradBegin and tradEnd>=CurrentTime*100) \\兩種方案,不知那種方案正確
{
if(A_TotalPosition()=0) \\返回當(dāng)前公式應(yīng)用的帳戶下當(dāng)前商品的總持倉(cāng) (無(wú)持倉(cāng))
{
IF(A>B) \\開(kāi)多條件
{
A_SendOrder(Enum_Buy,Enum_Entry,lost,Q_AskPrice()+N*MinMove*PriceScale);
)\\發(fā)送委托單 開(kāi)多倉(cāng)一手
}
} else IF(C>D) \\ 開(kāi)空條件
{
A_SendOrder(Enum_Sell,Enum_Entry,lost,Q_BidPrice()-N*MinMove*PriceScale); \\發(fā)送委托單 開(kāi)空倉(cāng)一手
}
}else if(A_BuyPosition>0) \\ 持多倉(cāng)的情況
{ IF(C>D) \\ 在持多倉(cāng)的情況,出現(xiàn)開(kāi)空信號(hào)的處理
{
A_SendOrder(Enum_Sell,Enum_Exit, A_sellPosition(),Q_BidPrice()-N*MinMove*PriceScale); \\平多倉(cāng)
A_SendOrder(Enum_Sell,Enum_Entry,lost,Q_BidPrice()-N*MinMove*PriceScale); \\開(kāi)空倉(cāng)
} else if( A_BuyAvgPrice()-Q_BidPrice>20) \\\止損 在持多倉(cāng)的情況,如果下跌,下跌超過(guò)20點(diǎn)止損
{ A_SendOrder(Enum_Sell,Enum_Exit, A_BuyPosition,Q_BidPrice()-N*MinMove*PriceScale); \\平多倉(cāng) 注:是平倉(cāng),不是平今
} else if(A<B) \\在持多倉(cāng)的情況,達(dá)到平多條件平倉(cāng)
{
A_SendOrder(Enum_Sell,Enum_Exit, A_BuyPosition(),Q_BidPrice()-N*MinMove*PriceScale); \\平多倉(cāng)
}
} else if(A_SellPosition>0)\\ 持空倉(cāng)的情況
{
IF(A>B) \\在持空倉(cāng)的情況,出現(xiàn)了開(kāi)多信號(hào)處理
{ A_SendOrder(Enum_Buy,Enum_Exit,A_sellPosition(),Q_AskPrice()+N*MinMove*PriceScale); \\平空倉(cāng)
A_SendOrder(Enum_Buy,Enum_Entry,lost,Q_AskPrice()+N*MinMove*PriceScale); \\開(kāi)多倉(cāng)
} else if(Q_AskPrice-A_SellAvgPrice)>20) \\止損 在持空倉(cāng)的情況,如果上跌,上漲超過(guò)20點(diǎn)止損
{
A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_BidPrice()+N*MinMove*PriceScale);\\平空倉(cāng)
} else If( C<D) \\在持空倉(cāng)的情況,達(dá)到平空條件平倉(cāng)
{
A_SendOrder(Enum_Buy,Enum_Exit,A_sellPosition(),Q_BidPrice()+N*MinMove*PriceScale);\\平空倉(cāng)
}
} else If(CurrentTime*100 >= mycputime ) //平倉(cāng)時(shí)間設(shè)置
{
If (A_BuyPosition()>0 && A_GetOpenOrderCount()==0 and K>=0)
{
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),Q_BidPrice()-N*MinMove*PriceScale);
}
If (A_sellPosition()>0 && A_GetOpenOrderCount()==0 and K<=0)
{
A_SendOrder(Enum_Buy,Enum_Exit,A_sellPosition(),Q_AskPrice()+N*MinMove*PriceScale);
}
}
}
end
- 網(wǎng)友回復(fù):
本帖最后由 xiaosong 于 2013-7-20 17:49 編輯
版主老大,各位論壇上的朋友在嗎?
上面的我的公式中,
1:用A函數(shù)在,在一根K線會(huì),發(fā)生反復(fù)發(fā)單的情況嗎?
2:達(dá)到條件后開(kāi)倉(cāng)后,馬上進(jìn)去有倉(cāng)的入口,在有入倉(cāng)的入口,只有三個(gè)條件入口: 反向開(kāi)倉(cāng)平倉(cāng)入口,止損入口, 按要求平倉(cāng)入口.
沒(méi)在再開(kāi)多樣倉(cāng)向的入口
3:我在這個(gè)公式中,要用全局變量嗎? - 網(wǎng)友回復(fù):
昨晚與今天在網(wǎng)看了一天的貼.
1:每當(dāng)Tick來(lái)時(shí),如果激發(fā)開(kāi)倉(cāng)條件,就會(huì)發(fā)單.
A_SendOrder(Enum_Buy,Enum_Entry,Lots,Q_AskPrice()+N*MinMove*PriceScale);//發(fā)送委托單 開(kāi)多倉(cāng)一手
雖然if(A_TotalPosition()==0),是沒(méi)有持倉(cāng)時(shí)的入口,好相if(A_TotalPosition()==0)能控制,有持倉(cāng)時(shí)不進(jìn)來(lái).
但是因?yàn)闀r(shí)間的延時(shí),發(fā)單成交的數(shù)據(jù)遲遲不返回,斷網(wǎng)..或者發(fā)單不成交.
在上一個(gè)發(fā)單(Tick激發(fā)開(kāi)倉(cāng)條件)------------------又一次Tick激發(fā)開(kāi)倉(cāng)條件--------------------到發(fā)單交成返回之間.
就會(huì)二次運(yùn)行.
if(A_TotalPosition()==0),
{
}
這就發(fā)二次單,如果都成交,就會(huì)成交二次.
2:這種Tick激發(fā)方式,能保證成交的及時(shí)性. 如果都采用Bar方式,價(jià)格就差很多.
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 1145508240 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容