初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 68 1...616263646566676869707172737475...260 新しいコメント FOTOGRAF14 2017.02.19 16:49 #671 正しい方法でコードを 入れたのに、表示されない。 FOTOGRAF14 2017.02.19 16: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 どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - [ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you FOTOGRAF14 2017.02.19 16:56 #673 onstartのブラケットで2つのエラーが出ました。forループでブラケットが足りないようで、11個のエラーを出しました、奇跡!!!!!!! FOTOGRAF14 2017.02.19 17:02 #674 削除済み 2017.02.20 04:30 #675 FOTOGRAF14: onstartのブラケットで2つエラーが出ました。forループでブラケットが足りないようで、11個のエラーをループに入れました、奇跡です!!! エラーの数を増やすことが悪いことだと思わないでくださいのブラケットは本当に必要です。ただ、このエラーはまず修正する必要があります。修正した後、どうやらもっとエラーがあるようです :) Yaroslav Nykula 2017.02.23 17:05 #676 FOTOGRAF14: onstartのブラケットで2つエラーが出ました。forループのブラケットが足りないようです。11個のエラーを出しました。ミラクル!!!!奇跡は起きない...。"')'- unexpected end of program'' - unexpected end..."'{' - アンバランスな括弧" - 覆いのない括弧...= 不完全な括弧、 '{' が無いか不要 ...コードをよく確認し、必要なところに追加する必要があります。 Yaroslav Nykula 2017.02.23 18:28 #677 FOTOGRAF14: 25、27ページ、-セミコロンがありません。44, 48, 50, 69, - Texst, コンパイラはそれが何であるか理解していない、 'Text' は宣言された識別子ではない = それは処理されなければならない。48ページ、50ページ、-オペランドが予想される=コロンがない可能性が最も高い。64ページ - Ticket = not declared identifier.などと、間違いを整理してください。 Alexey Volchanskiy 2017.02.23 18:33 #678 FOTOGRAF14:コードをそのまま貼り付けて いるのですが、見当たりません。のように入力する必要があります。***フォーラムグリッチ Alexey Volchanskiy 2017.02.23 18:40 #679 FOTOGRAF14: へいへいなぜラストオーダーを飛ばしているのか、その意図とは?for(int i=1; i<=OrdersTotal(); i++) // Цикл выбора ордеров { if(OrderSelect(i-1, SELECT_BY_POS)==true) //Eсли ордер выбран { egorro 2017.03.02 09:21 #680 ターミナル - ニュースタブで、ポップアップウィンドウのサイズとフォント サイズを変更し、ターミナルを終了してからログインしても変更内容が保持されるようにするには、どうすればよいのでしょうか。 1...616263646566676869707172737475...260 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? 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のブラケットで2つエラーが出ました。forループでブラケットが足りないようで、11個のエラーをループに入れました、奇跡です!!!
onstartのブラケットで2つエラーが出ました。forループのブラケットが足りないようです。11個のエラーを出しました。ミラクル!!!!
25、27ページ、-セミコロンがありません。
44, 48, 50, 69, - Texst, コンパイラはそれが何であるか理解していない、 'Text' は宣言された識別子ではない = それは処理されなければならない。
48ページ、50ページ、-オペランドが予想される=コロンがない可能性が最も高い。
64ページ - Ticket = not declared identifier.
などと、間違いを整理してください。
コードをそのまま貼り付けて いるのですが、見当たりません。
のように入力する必要があります。
***
フォーラムグリッチ
なぜラストオーダーを飛ばしているのか、その意図とは?
{
if(OrderSelect(i-1, SELECT_BY_POS)==true) //Eсли ордер выбран
{