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