[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 95

 

そして、預金が十分かどうかをチェックする? https://docs.mql4.com/ru/constants/marketinfo

そして、出力のロットを確認する?

 

それが問題なんだ...。ロット数が無限大に増える、つまり増量がループしてしまい、コードによって一過性の増量であることが判明する...。

その後、分かりやすくするために、以下をご覧ください。

if (Total==0 && Opn_B==true)         // Открытых орд. нет  
            {                                   // критерий откр. Buy
            RefreshRates();                     // Обновление данных
                                  
            Min_Lot=MarketInfo(Symb,MODE_MINLOT);  // Миним. колич. лотов 
            Free   =AccountFreeMargin();           // Свободн средства
            One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Стоимость 1 лота
            Step   =MarketInfo(Symb,MODE_LOTSTEP); // Шаг изменен размера
            Lts=MathFloor(Vol);                    // Для открытия 
            Alert ("Lts ", Lts);
            if(Lts < Min_Lot) Lts=Min_Lot;         // Не меньше минимальн
            if (Lts*One_Lot < Free) Alert(" Не хватает денег на ", Lts," лотов"); // Лот дороже свободн.
            
            SL=Ask-StopLoss_Open*Point;            // Вычисление SL откр.
            TP=Ask+TakeProfit_Open*Point;          // Вычисление TP откр.
            Alert("Попытка открыть Buy. Ожидание ответа..");
            Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP); //Открытие Buy
            if (Ticket > 0)                        // Получилось :)
                {
                Alert ("Открыт ордер Buy ",Ticket);
                VKO0=Ask; Opn_B =false; KO++;
                Alert ("Цена открытия =", VKO0);
                }
             
            
            if (Fun_Error(GetLastError())==1)   // Обработка ошибок
            continue;                           // Повторная попытка
                                         
            }
 
            continue;                           // Повторная попытка

いわゆる "一発屋 "なのでしょうか?

キャップ、当たり前ですが、サイクルがあるんです。

 
sergeevさん、ご自身の考えが甘いのでは...オープニングエラーが発生した場合のサイクルであって、ロット数を増やすためのものではありませんよ。
 

こんにちは。

以下の質問に対する回答が見つかりません。

保留中の注文が 約定した場合、その種類は保留中の注文の種類のままなのか、それともOP_BUYやOP_SELLに変更されるのでしょうか?

 
oDin48:

それが問題なんだ...。ロット数が無限大に増える、つまり増量がループしてしまい、コードによって一過性の増量であることが判明する...。

その後、分かりやすくするために、以下をご覧ください。

トライ
if (Fun_Error(GetLastError())==0)   // Нет ошибки
break; 
エラーが発生した場合は、新しいティックで再度ポジションを開こうと するだけです。ところで、この掲示板(P.90-91)で、ifの中で&&(アンド)演算子を使わない方が良いと説明されていました。
 
gogent:

保留中の注文が約定した場合、保留中の注文のままなのか、OP_BUYやOP_SELLに変更されるのか、どちらでしょうか?

はい、もちろんそうです。
 

pipsの数を通貨に換算する方法をご存知の方はいらっしゃいますか?

i.e. 利益が通貨単位なら、50pipsは通貨単位に換算すべき...つまり、レバレッジを考慮すべき...なのでしょうか? 0_о

 

paladin80さん、問題は注文を開けないことです...。正常に動作しています。01.05.12 19:15の投稿から、どの変数がさらに使われたかを明確にするために、この部分を読み飛ばしました...

問題はこれ(後述)、一回限りの実行なのに、なぜかVolが無限大に増え、それゆえLtsも無限大に増える......ということです。よくわからないが...問題の投稿を見て、何が問題なのか教えてください...。

if ((Opn_S==true)||(Opn_B==true))               // Если есть сигнал на открытие ордера
      {                                         // Вычисляем объем умножая на VP
      if (AccountBalance()<50000) Vol=Opn_Lots*VP;
      if (AccountBalance()>50000) Vol=2*Opn_Lots*VP;
      }
 
w_ersoc:

pipsの数を通貨に換算する方法をご存知の方はいらっしゃいますか?

i.e. 利益が通貨単位なら、50pipsは通貨単位に換算すべき...つまり、レバレッジを考慮すべき...なのでしょうか? 0_о


profit=lot*points*TICK_VALUE。