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