externstring с9="------ Трейлингстоп ------";
externint TrailingStop=20; //Трейлинг-Стоп рыночного ордера. Если = 0 или то тарла нетexternint TrailingStep=5; //Шаг трала рыночного ордераexternbool WaitProfit = true; // Если true, то ждать профит = значению TrailingStop и только потом начинать тралить//Иначе, трейлинговать не дожидаясь положительного профита
extern string с10=" -------- Прочие параметры -------------";
extern int MAGIC=123456;//У ордеров открытых вручную MAGIC=0
extern int Proskalz=10;//Проскальзывание
大家好...
能否请您告诉我如何建立MetaTrader 4历史文件的路径?像 "c:\program files\metatrader 4\history\alpari-classic\"?
非常感谢你,Sergeev,我想我已经找到了......
Print("Terminal path: ", TerminalPath() + "\\history\\" + AccountServer() + "\\");
这一行输出的是正确的路径,尽管编辑器的颜色是错误的...你也许应该用记事本写代码。开个玩笑。
大家晚上好!
在谢尔盖-科瓦廖夫的教程中,我找到了一个专家--追踪止损。我把它复制到MetaEditor中,编译了它,但程序不能工作。请告知原因何在。也许我做错了什么。
它是用mql写的吗?)
只要给我代码。
//-------------------------------------------------------------------- // modifystoploss.mq4 //旨在作为MQL4教程中的一个例子。 //-------------------------------------------------------------------- extern int Tral_Stop=10; // Dist. pursuit //--------------------------------------------------------------- 1 -- int start() // Special function start { string Symb=Symbol(); // Fin.工具 //--------------------------------------------------------------- 2 -- for(int i=1; i<=OrdersTotal(); i++) // 订单循环 { if (OrderSelect(i-1,SELECT_BY_POS)==true) // If there is a next { // 订单分析: int Tip=OrderType(); // 订单类型 if(OrderSymbol() !=Symb||Tip>1)continue;//不是我们的订单 double SL=OrderStopLoss(); //选定订单的SL //------------------------------------------------------ 3 -- while(true) //修改循环 { double TS=Tral_Stop; //初始值 int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL); //最小距离。 if (TS<Min_Dist) //如果有小于允许值,那么订单将被删除。 TS=Min_Dist; // TS的新值 //--------------------------------------------------- 4 -- bool Modify=false; // 不指定修改 switch(Tip) // 按订单类型 { case 0 : // 买入订单 if (NormalizeDouble(SL,Digits)< // If lower desired. NormalizeDouble(Bid-TS*Point,Digits)) { SL=Bid-TS*Point; // 然后修改它 string Text="Buy"; // 买入的文本 Modify=true; // 指定修改 } break; // exit if case 1 : // Sell order if (NormalizeDouble(SL,Digits)> // if above requested. NormalizeDouble(Ask+TS*Point,Digits)|| NormalizeDouble(SL,Digits)==0)//或等于零 { SL=Ask+TS*Point; //然后修改它 Text="Sell"; // Modify=true; //指定修改 } }/结束开关 if (Modify=false) //如果没有修改 break; //退出 while //--------------------------------------------------- 5 -- double TP =OrderTakeProfit(); //选定订单的TP。 double Price =OrderOpenPrice(); //所选订单的价格。 int Ticket=OrderTicket(); //所选订单的编号。 Alert ("Modify ",Text,Ticket,".Waiting for reply..."); bool Ans=OrderModify(Ticket,Price,SL,TP,0); //修改它! //--------------------------------------------------- 6 -- if (Ans=true) // It worked :) { Alert ("Order " ,Text,Ticket," modified:)"); break; // From loop modify. } //--------------------------------------------------- 7 -- int Error=GetLastError(); //失败了 :( switch(Error) //克服错误 { case 130:Alert("错误的停止。再试一次。"); RefreshRates(); //刷新数据 继续; //下一次迭代。iteration case 136:Alert("No price. Waiting for a new tick..."); while(RefreshRates()==false) // Till the new tick Sleep(1); // Delay in loop continue; // Next iteration case 146:Alert("The trading subsystem is busy.Try again"); Sleep(500); // Simple solution RefreshRates(); // Refresh data continue; // Next iteration // Critical errors case 2 : Alert("General error."); break; // Exit switch case 5 : Alert("Old client terminal version."); break; // Exit switch case 64 : Alert("Account blocked."); break; // Exit switch case 133:Alert("禁止交易"); break; // Exit switch default: Alert("Error ",Error);//Error } break; // end of modify loop } // end of modify loop //------------------------------------------------------ 8 -- } // end of order analysis //--------------------------------------------------------------- 9 -- return; // Exit start() } //-------------------------------------------------------------- 10 --大家晚上好!
在谢尔盖-科瓦廖夫的教程中,我找到了一个专家--追踪止损。我把它复制到MetaEditor中,编译了它,但程序不能工作。请告知原因何在。也许我做错了什么。
使用这个。
在用户变量中,我们写道。
在EA Start中写道。
// ----------------------------- Тралим ордера ------------------------------------ TrailingRyn_b(TrailingStop,TrailingStep,Proskalz,MAGIC,WaitProfit,false);开始后在自定义子程序中写入。
像ModifError()这样的函数是我的自定义函数--它们只是显示一个错误信息。写下你自己的信息,而不是。
https://docs.mql4.com/ru/indicators/iBands