初学者的问题 MQL4 MT4 MetaTrader 4 - 页 68 1...616263646566676869707172737475...261 新评论 FOTOGRAF14 2017.02.19 17:49 #671 我把代码放在 正确的地方,但我没有看到它。 FOTOGRAF14 2017.02.19 17:53 #672 //| 9.1.4.5 OrderDelete.mq4 |//| Copyright 2016, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2016, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#property strict//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+1void OnStart(){ string Symb=Symbol(); //Финансовый инструмент double Dist=1000000.0; //Предустановка double Price; int Limit_Stop=-1; // Пока отложенных нет int Tip; double Win_Price=WindowPriceOnDropped(); //Здесь брошен скрипт //-------------------------------------------------------------------+2 for(int i=1; i<=OrdersTotal(); i++) // Цикл выбора ордеров { if(OrderSelect(i-1, SELECT_BY_POS)==true) //Eсли ордер выбран { //------------------------------------------------------------------+3 if(OrderSymbol()!=Symb) continue //не ваш фин. инструмент int Tip=OrderType(); //Тип ордера if(Tip<2) continue //Рыночный ордер //------------------------------------------------------------+4 double Price=OrderOpenPrice(); //Цена откр. отлож. ордера if(NormalizeDouble(MathAbs(Price-Win_Price),Digits)< NormalizeDouble(Dist,Digits)) { Dist=MathAbs(Price-Win_Price); // Новое значение Limit_Stop=Tip; //Есть отложенный ордер int Ticket=OrderTicket(); // номер ордера } } //+---------------------------------------------------------------+5 switch(Limit_Stop) { case 2: string Texst="BuyLimint "; break; case 3: Texst="SellLimint "; break; case 4 Texst="BuyStop "; break; case 5 Texst="SellStop "; break; } //------------------------------------------------------------------+6 //ЦИКЛ ЗАКРЫТИЯ ОРДЕРА //-------------------------------------------------------------------- while(true) // цикл закрытия ордера { if(Limit_Stop==-1) //если отложенных нет { Alert("по ",Symb,"отложенных ордеров"); //если отложенных нет break; } //-----------------------------------------------------------------+7 Alert("Попытка удалить ","",Ticket,"ожидание ответа.."); bool Ans=OrderDelete(Ticket); //Удаление ордера //--------------------------------------------------------------------- if(Ans==true) { Alert("Удалён ордер ",Text,"",Ticket); break; } int Error=GetLastError(); switch(Error) { case 4:Alert("Торговый сервер занят. Пробуем ещё раз.."); Sleep(3000); //Обновим данные continue; //На следующую итерацию case 137:Alert("Брокер занят. Пробуем ещё раз..."); Sleep(3000); continue; case 146:Alert("Подсистема торговли занята. Пробуем ещё раз..."); Sleep(500); continue; // На следующую итерацию } switch(Error) //Критические ошибки { case 2:Alert("Oбщая ошибка."); break; //Выход из switch case 64:Alert("Счёт заблокирован."); break; //Выход из switch case 133:Alert("Торговля заблакирована."); break; case 139:Alert(" Ордер заблакирован и уже обрабатывается."); break; case 145:Alert("Модификация запрещена.Ордер слишком близок к рынку"); break; default:Alert("Возникла ошибка.",Error); //Другие варианты //Выход из switch } break; } //---------------------------------------------------------------------+ Alert("Скрипт законччил работу-----------------------."); return;} 伙计们看一下 Questions from Beginners MQL4 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. FOTOGRAF14 2017.02.19 17:56 #673 在onstart的括号中出现了两个错误。看起来在for循环中缺少一个括号,我把11个错误,miracle!!!!。 FOTOGRAF14 2017.02.19 18:02 #674 [删除] 2017.02.20 05:30 #675 FOTOGRAF14: 不要认为增加错误的数量是错误的!真正需要的是托架。只是这个错误首先需要被修复。修复后,显然有更多的错误:) Yaroslav Nykula 2017.02.23 18:05 #676 FOTOGRAF14: 我在onstart的括号中得到了两个错误。似乎在for循环中缺少一个括号,我把11个错误,miracle!!!!。奇迹不会发生..."')'- 程序意外结束'' - 意外结束..."'{'--不平衡的括号"--未覆盖的括号...=不完整的括号, '{' 缺少或不需要......。需要仔细检查代码,并在需要的地方添加,而不仅仅是或删除一个额外的代码。 Yaroslav Nykula 2017.02.23 19:28 #677 FOTOGRAF14: 第25、27页,--缺少分号。第44、48、50、69页,--Texst,编译器不理解它是什么,'Text'不是一个声明的标识符=必须处理它。第48、50页,-预期的操作数=很可能缺少一个冒号。第64页--门票=未声明的标识符。以此类推,整理出你的错误。 Alexey Volchanskiy 2017.02.23 19:33 #678 FOTOGRAF14:我只是 按规定粘贴了代码,但我没有看到它。你必须输入类似以下内容***论坛故障 Alexey Volchanskiy 2017.02.23 19:40 #679 FOTOGRAF14: 伙计们看一下你为什么要跳过最后一个订单--这就是你的意图吗?for(int i=1; i<=OrdersTotal(); i++) // Цикл выбора ордеров { if(OrderSelect(i-1, SELECT_BY_POS)==true) //Eсли ордер выбран { egorro 2017.03.02 10:21 #680 我如何改变弹出窗口的大小和其中的字体大小,以便在我退出终端然后登录时保留这些变化? 1...616263646566676869707172737475...261 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
//| 9.1.4.5 OrderDelete.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+1
void OnStart()
{
string Symb=Symbol(); //Финансовый инструмент
double Dist=1000000.0; //Предустановка
double Price;
int Limit_Stop=-1; // Пока отложенных нет
int Tip;
double Win_Price=WindowPriceOnDropped(); //Здесь брошен скрипт
//-------------------------------------------------------------------+2
for(int i=1; i<=OrdersTotal(); i++) // Цикл выбора ордеров
{
if(OrderSelect(i-1, SELECT_BY_POS)==true) //Eсли ордер выбран
{
//------------------------------------------------------------------+3
if(OrderSymbol()!=Symb) continue //не ваш фин. инструмент
int Tip=OrderType(); //Тип ордера
if(Tip<2) continue //Рыночный ордер
//------------------------------------------------------------+4
double Price=OrderOpenPrice(); //Цена откр. отлож. ордера
if(NormalizeDouble(MathAbs(Price-Win_Price),Digits)<
NormalizeDouble(Dist,Digits))
{
Dist=MathAbs(Price-Win_Price); // Новое значение
Limit_Stop=Tip; //Есть отложенный ордер
int Ticket=OrderTicket(); // номер ордера
}
}
//+---------------------------------------------------------------+5
switch(Limit_Stop)
{
case 2: string Texst="BuyLimint ";
break;
case 3: Texst="SellLimint ";
break;
case 4 Texst="BuyStop ";
break;
case 5 Texst="SellStop ";
break;
}
//------------------------------------------------------------------+6
//ЦИКЛ ЗАКРЫТИЯ ОРДЕРА
//--------------------------------------------------------------------
while(true) // цикл закрытия ордера
{
if(Limit_Stop==-1) //если отложенных нет
{
Alert("по ",Symb,"отложенных ордеров"); //если отложенных нет
break;
}
//-----------------------------------------------------------------+7
Alert("Попытка удалить ","",Ticket,"ожидание ответа..");
bool Ans=OrderDelete(Ticket); //Удаление ордера
//---------------------------------------------------------------------
if(Ans==true)
{
Alert("Удалён ордер ",Text,"",Ticket);
break;
}
int Error=GetLastError();
switch(Error)
{
case 4:Alert("Торговый сервер занят. Пробуем ещё раз..");
Sleep(3000); //Обновим данные
continue; //На следующую итерацию
case 137:Alert("Брокер занят. Пробуем ещё раз...");
Sleep(3000);
continue;
case 146:Alert("Подсистема торговли занята. Пробуем ещё раз...");
Sleep(500);
continue; // На следующую итерацию
}
switch(Error) //Критические ошибки
{
case 2:Alert("Oбщая ошибка.");
break; //Выход из switch
case 64:Alert("Счёт заблокирован.");
break; //Выход из switch
case 133:Alert("Торговля заблакирована.");
break;
case 139:Alert(" Ордер заблакирован и уже обрабатывается.");
break;
case 145:Alert("Модификация запрещена.Ордер слишком близок к рынку");
break;
default:Alert("Возникла ошибка.",Error); //Другие варианты //Выход из switch
}
break;
}
//---------------------------------------------------------------------+
Alert("Скрипт законччил работу-----------------------.");
return;
}
我在onstart的括号中得到了两个错误。似乎在for循环中缺少一个括号,我把11个错误,miracle!!!!。
第25、27页,--缺少分号。
第44、48、50、69页,--Texst,编译器不理解它是什么,'Text'不是一个声明的标识符=必须处理它。
第48、50页,-预期的操作数=很可能缺少一个冒号。
第64页--门票=未声明的标识符。
以此类推,整理出你的错误。
我只是 按规定粘贴了代码,但我没有看到它。
你必须输入类似以下内容
***
论坛故障
你为什么要跳过最后一个订单--这就是你的意图吗?
{
if(OrderSelect(i-1, SELECT_BY_POS)==true) //Eсли ордер выбран
{