[举手] MT4之MQL4语法问题

楼主: ColiColi (☠Busy Life☠)   2019-03-15 16:52:03
我目前着手写的程式
出场问题比较令我困扰一些
目前出场情况有四种
其中两种没什么问题
出场后可以继续正常开新仓
另两种出场情况则不太一样
只要符合条件就会出场且
当日不会再进行任何交易
想问的是 我已写好当日交易时间的滤网
例如一天只在9~21之间开新部位
而且我把这个时间滤网是放在开新仓指令的开头 若在这段期间外会用return跳出
至于这个当日某笔止损金额达到一定程度的出场条件
我会用Bool撰写 若达到条件为True 否则为False 我也想把他放到开新仓指令的开头
也就是
if (TimeCurrent()<StrToTime("09:00") || TimeCurrent()>StrToTime("21:00") ||
BuyClose5==True || SellClose5==True)
return;
现在第一个问题是当日最大止损 我参考别人的语法写了两种最大止损
一个是检查未平仓交易 达到条件就出场 另一个是检查已平仓交易
按照这个逻辑 我可以在出场指令那边结束这个部位
同时会再写一个Bool是去抓历史交易资料
第二个问题就是若我依据这个止损条件作为开新仓的标准
他有办法做为当日有效的指令吗?
还是说隔天符合开新仓的时间时 他一样会去检查是否有最大止损情况发生吗?
如果是这样的话 请问我需要怎么调整才能让单笔最大止损每日重新计算
避免永远开不了新仓 囧 我找了很多网站但都没看到相关讨论
用英文搜寻也一样 所以只好上来问各位前辈了@@ 问题若过于初浅
还请见谅
Bool_BuyClose5()
{
for(int i=OrdersHistoryTotal()-1,i>=0,i
作者: ducati5566 (on the way!!!)   2019-03-16 09:19:00
意思是你要在止损后,再用这个止损价位作为新仓标准?
楼主: ColiColi (☠Busy Life☠)   2019-03-16 10:16:00
就是一旦达到这个止损条件 当天就不再进场 我用bool或直接加在进场前的if里都没办法顺利执行这个滤网…
作者: ducati5566 (on the way!!!)   2019-03-16 10:54:00
尝试看做一个开关,停损后设成 false, 然后做一个newbar(1440),当newbar等于true,再把开关赋值true。然后执行其他程式码。我不确定是否可行
作者: chkuya (chk)   2019-03-16 10:56:00
9点到21点那边不是应该用&&吗?停损变量可以抓今日内历史平仓损益,加上未平仓损益
作者: ducati5566 (on the way!!!)   2019-03-16 11:06:00
其实我不太明白你的问题,你是停损后无法再次开单,还是再次开单的时候没有在滤镜条件内?
作者: chkuya (chk)   2019-03-16 11:08:00
他应该是停损值没有重新reset应该不用再用另一个时间变量判断是否换日直接抓今日的资料就好
作者: ducati5566 (on the way!!!)   2019-03-16 13:36:00
你尝试一下c大的方法吧。跨TF的newbar在backtest好像做不到。
作者: chkuya (chk)   2019-03-16 21:59:00
他应该也没有要跨TF抓当日用循环去累加今日平仓后再加未平仓这样比用变量判断是否跨日再累加损益方便

Links booklink

Contact Us: admin [ a t ] ucptt.com