新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 871

 

我做错了什么? 在M5上开关正常,但没有进一步开关。

extern string helper111="Настройки Helper";//Helper
extern bool helperTRUE=TRUE;        //Вкл/Выкл Helper
extern bool timeM1=TRUE;            //Переключения на М старт когда ордера все закрыты
extern int helper_period=PERIOD_M5; //Периуд М старт в минутах
extern int helper_period0=PERIOD_H1;//Базовый таймфрейм работы советника
extern int order_period1=6;         //Колво ордеров для переключения на Time 1
extern int helper_period1=PERIOD_D1;//Time 1 в минутах
extern int order_period2=8;         //Колво ордеров для переключения на Time 2
extern int helper_period2=PERIOD_W1;//Time 2 в минутах


int helperrr()
{
   if(helperTRUE==TRUE) {  
   if(timeM1==TRUE && NumberOfPositions()==0) ChartSetSymbolPeriod(0, NULL, helper_period);
   else {
   if(((NumberOfPositions1()>=0 && NumberOfPositions1()<order_period1)
   || (NumberOfPositions1()>=0 && NumberOfPositions2()<order_period1)
   || (NumberOfPositions1()>=0 && NumberOfPositions3()<order_period1)) && _Period != helper_period0)
   ChartSetSymbolPeriod(0, NULL, helper_period0);
   if((NumberOfPositions1()>=order_period1 && NumberOfPositions1()<order_period2 && OrderMagicNumber()==MagicNumber_1)
   || (NumberOfPositions2()>=order_period1 && NumberOfPositions2()<order_period2 && OrderMagicNumber()==MagicNumber_2)
   || (NumberOfPositions3()>=order_period1 && NumberOfPositions3()<order_period2 && OrderMagicNumber()==MagicNumber_3))
   ChartSetSymbolPeriod(0, NULL, helper_period1);
   if((NumberOfPositions1()>=order_period2 && OrderMagicNumber()==MagicNumber_1)
   || (NumberOfPositions2()>=order_period2 && OrderMagicNumber()==MagicNumber_2)
   || (NumberOfPositions3()>=order_period2 && OrderMagicNumber()==MagicNumber_3))
   ChartSetSymbolPeriod(0, NULL, helper_period2);
   }
   }
   return(0);
}
 
fxsaber:

我没有发现任何交易工具,如美元指数等(指标?)

他们不被允许 在上面交易,你的代码将如何表现?

 
Igor Makanu:

我没有发现任何交易工具,如美元指数等(指标?)

禁止在它们上面交易,你的代码将如何表现?

来自EA的假的OrderSend并不总是允许你决定其设置。


我提供的代码显示了任何EA的设置,不管是符号属性还是其他。例如,在同一图表上运行某种EA,然后运行这个脚本

// Скрипт показывает, в каком режиме Long/Short запущен советник на данном чарте.
void OnStart()
{
  Alert(LongShortToString());
}
 
fxsaber:

来自EA的虚假OrderSend并不总是揭示其设置。


我提供的代码显示了任何EA的设置,不管是符号属性还是其他。例如,在同一图表上运行某种EA,然后运行这个脚本

经检查,它是有效的,但

1.在讨论中https://www.mql5.com/ru/forum/214590/page6#comment_11947599

代码应该替换为return(INIT_SUCCEEDED);--我试了一下,不明白EA在哪里丢失了))

2.我不明白,为什么当我选择EA属性并放入一个不同的复选框时,警报没有重新出现,当我切换TFs时,一切正常。

Библиотеки: Expert
Библиотеки: Expert
  • 2019.04.23
  • www.mql5.com
Expert: Автор: fxsaber...
 
fxsaber:

来自EA的虚假OrderSend并不总是揭示其设置。


我提供的代码显示了任何EA的设置,不管是符号属性还是其他。例如,在同一图表上运行某种EA,然后运行这个脚本

是否可以将您的代码添加到EA中?

int testTicket=OrderSend(Symbol(),OP_SELL,0.01,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0.01,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

用这个代码,它无休止地在xauusd上开多头和空头订单。

 
Lomonosov1991:

我可以把你的代码添加到我的EA中吗?

是的。


关于交易、自动交易系统和策略测试的论坛

任何MQL4和MQL5初学者的问题、帮助和关于算法和代码的讨论

Lomonosov1991, 2019.06.04 19:01

int testTicket=OrderSend(Symbol(),OP_SELL,0.01,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0.01,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

用这个代码可以无休止地在xauusd上打开多头和空头订单。

这里的想法是,你需要的量正好为零
 
fxsaber:

是的。


这里的想法是,你需要的量正好为零
它开出0.01手,没有成交量。
int testTicket=OrderSend(Symbol(),OP_SELL,0,0,3,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0,0,3,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";

而这根本不起作用。

int testTicket=OrderSend(Symbol(),OP_SELL,0,0,0,0,0,"Sell Try",1,0,CLR_NONE);
if (GetLastError() == 4111) testLONG_SHORT="Long Only Mode"; 
testTicket=OrderSend(Symbol(),OP_BUY,0,0,0,0,0,"Buy Try",1,0,CLR_NONE); 
if (GetLastError() == 4110) testLONG_SHORT="Short Only Mode";





 
Igor Makanu:

经检查,它是有效的,但

1.在讨论中,https://www.mql5.com/ru/forum/214590/page6#comment_11947599

我应该用return(INIT_SUCCEEDED);代替代码 - 我试了一下,不明白Expert Advisor在哪里丢失了 ))

我特意在这个例子中放了FAILED,这样我就不需要以后手动删除它。

2.我不明白为什么当我选择EA属性并勾选另一个复选框时,警报没有重新出现,当我切换TFs时,一切正常。

当改变长/短线时,没有OnDeinit/OnInit调用。

 
我不明白如何运行它()
附加的文件:
 
fxsaber:

改变长/短时,没有OnDeinit/OnInit调用。

奇怪的行为,通常OnIniT()是在调用设置窗口后执行的。


罗蒙诺索夫1991年
我不明白如何运行它()

附上样本,解压后分散在文件夹中

附加的文件:
MQL4.zip  5 kb