您說的”修改成為bar內(nèi)開倉,系統(tǒng)的開倉和平倉就不按照之前的想法來開倉了“這句話不是太理解您的意思。
一、您是基于MC自帶的trendline LE和trendline SE進(jìn)行的修改,但是MC自帶的這個策略是可以實現(xiàn)跌破開多單、突破開空單的。
二、您使用的判斷語句是close<TL_GetValue(TLRef, Date, Time)沒有問題,開啟bar內(nèi)的情況下,close是實時的價格,當(dāng)實時價格在趨勢線以下時執(zhí)行多單開倉。
三、并且您執(zhí)行的是市價單,所以當(dāng)條件滿足時就發(fā)送市價單并且會立即成交,不會在下一筆tick條件不滿足的情況下取消之前的委托單。
四、代碼中沒有止損語句。
?
您說的”修改成為bar內(nèi)開倉,系統(tǒng)的開倉和平倉就不按照之前的想法來開倉了“這句話不是太理解您的意思。
一、您是基于MC自帶的trendline LE和trendline SE進(jìn)行的修改,但是MC自帶的這個策略是可以實現(xiàn)跌破開多單、突破開空單的。
二、您使用的判斷語句是close<TL_GetValue(TLRef, Date, Time)沒有問題,開啟bar內(nèi)的情況下,close是實時的價格,當(dāng)實時價格在趨勢線以下時執(zhí)行多單開倉。
三、并且您執(zhí)行的是市價單,所以當(dāng)條件滿足時就發(fā)送市價單并且會立即成交,不會在下一筆tick條件不滿足的情況下取消之前的委托單。
四、代碼中沒有止損語句。
?
您看下這次的代碼,是增加了止損的,但是·····每根K線上都是止損·····
[IntrabarOrderGeneration = True]
inputs:?
? ? ? ? TLRef( 1 ) ,? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
? ? ? ? Sstop( 5 ) ;? ?? ?? ?? ?? ?? ?
variables:?
? ? ? ? var0( TL_GetBeginDate( TLRef ) ),?
? ? ? ? var1( TL_GetBeginTime( TLRef ) ),?
? ? ? ? var2( false ) ;
var2 = ( Date = var0 and ( BarType = 2 or ( BarType = 1 and Time >= var1 ) ) )?
or Date > var0 ;
condition1 = var2 and Close < TL_GetValue( TLRef, Date, Time ) ;
if condition1 then
? ? ? ? sellshort next bar at market;
? ? ? ? value1 = Close;
condition2 =??Close > value1 + Sstop;
if condition2 then
? ? ? ? buytocover next bar at market;
?
抱歉,回復(fù)的有點晚!
這個應(yīng)該是您的觸及壓力線賣空的信號吧,那么您的觸及支撐線做多的信號的代碼應(yīng)該和做空的代碼很像,猜測應(yīng)該是對稱的。
一、if condition1 then
? ?? ???sellshort next bar at market;
? ?? ???value1 = Close;
這句語句應(yīng)該是當(dāng)條件滿足,然后做空并且將當(dāng)時的close價格賦值給value1,方便用于計算止損價,但是這句寫錯了,因為value1在if的條件語句之外,是實時更新的,應(yīng)該寫成如下形式:
if condition1 then begin
? ?? ???sellshort next bar at market;
? ?? ???value1 = Close;
end;
二、由于在開啟bar內(nèi)交易下,close是實時價格,而您的代碼中value1實質(zhì)上和close是實時相等的,所以條件condition2在sstop為非負(fù)值的情況下永遠(yuǎn)返回false,也就是說
if condition2 then
? ?? ???buytocover next bar at market;
語句中的止損永遠(yuǎn)不會執(zhí)行。
三、這部分也是最嚴(yán)重的問題,您說您的每根K線都是止損的,問題出在condition1,也就是您做空的條件上,對應(yīng)的您做多的條件應(yīng)該是var2 and Close>TL_getvalue(TLRef,date,Time);當(dāng)價格在壓力線和支撐線之間時,做空的語句會執(zhí)行,因為做空的條件滿足了,同時也會做多,因為做多的條件也滿足了,這樣就導(dǎo)致了反復(fù)進(jìn)場,同時出場。您需要修改一下您的進(jìn)場條件。
?
抱歉,回復(fù)的有點晚!
這個應(yīng)該是您的觸及壓力線賣空的信號吧,那么您的觸及支撐線做多的信號的代碼應(yīng)該和做空的代碼很像,猜測應(yīng)該是對稱的。
一、if condition1 then
? ?? ???sellshort next bar at market;
? ?? ???value1 = Close;
這句語句應(yīng)該是當(dāng)條件滿足,然后做空并且將當(dāng)時的close價格賦值給value1,方便用于計算止損價,但是這句寫錯了,因為value1在if的條件語句之外,是實時更新的,應(yīng)該寫成如下形式:
if condition1 then begin
? ?? ???sellshort next bar at market;
? ?? ???value1 = Close;
end;
二、由于在開啟bar內(nèi)交易下,close是實時價格,而您的代碼中value1實質(zhì)上和close是實時相等的,所以條件condition2在sstop為非負(fù)值的情況下永遠(yuǎn)返回false,也就是說
if condition2 then
? ?? ???buytocover next bar at market;
語句中的止損永遠(yuǎn)不會執(zhí)行。
三、這部分也是最嚴(yán)重的問題,您說您的每根K線都是止損的,問題出在condition1,也就是您做空的條件上,對應(yīng)的您做多的條件應(yīng)該是var2 and Close>TL_getvalue(TLRef,date,Time);當(dāng)價格在壓力線和支撐線之間時,做空的語句會執(zhí)行,因為做空的條件滿足了,同時也會做多,因為做多的條件也滿足了,這樣就導(dǎo)致了反復(fù)進(jìn)場,同時出場。您需要修改一下您的進(jìn)場條件。