どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 452

 
Profitov:
質問は、エキスパートアドバイザーやスクリプトを記述することが可能である、それは一日に例えば2%の損失を達成するためにされるすべてのトランザクションを閉じますか?

可能です。
[Deleted]  
ヘルプ - 私はvin.8がインストールされている新しいラップトップを買った - 私は最後に更新されたアルパリから端末をダウンロード - 私は前に働いていた指標をロードし、フォルダMQL4 -指標で、彼らはそこに表示されます - しかし、ユーザーで端末自体にそれらを見ない、顧客サポートはストレート何も言わない - どうすればいいですか?
 
galinka:
ヘルプ - 私はvin.8がインストールされている新しいラップトップを買った - 私は最後に更新されたアルパリから端末をダウンロード - 私は前に働いていた指標をロードし、フォルダMQL4 -指標で、彼らはそこに表示されます - しかし、ユーザーで端末自体にそれらを見ない、顧客サポートはストレート何も言わない - どうすればいいですか?

システムメニューの「ファイル」に「データフォルダを開く」という項目が追加されました。今はそこに置くしかない。
[Deleted]  
できません - 端末にありません
[Deleted]  

プログラムファイル - Alpari - を開く - フォルダがある - MQL4 - indikators - を入れる - 表示される - 終了する - ターミナルを開く - ユーザーファイルにはない

[Deleted]  
私の指標には、変えるべきものがあるのかもしれません。
[Deleted]  

ありがとうございます、助かりました。

 
1mql:

最後のexternの下:
extern int slippage = 2; // 成行決済時の価格スリッページ

別のものを挿入:
extern bool total_symb = true; // すべてのペアで

と各行:
if((OrderSymbol() ==Symbol())
and
if(OrderSymbol() ==Symbol())

これを置換:
if(OrderSymbol() ==Symbol() || total_symb)

理論上動作していなければいけないので確認してみてください。


ポジションが有効になっているいくつかのチャートのみが閉じますが、他のチャートではエラー4107で閉じます。externで変更してみました bool Buy = false; //買い注文の削除/終了方向について
extern bool Sell = false; //delete/close売り注文の方向。 true では、うまくいかなかった。しかし、 例えば、 ポジションを開いて いないチャートにこれを置くと、どれも閉じず、エラー4107が見られる。
 
Profitov:
質問が発生した、エキスパートアドバイザーやスクリプトを記述することが可能である、その日に例えば2%の損失を達成するために、すべてのトランザクションを閉じますか?
すでに書かれて います。
 
alsu:

つまり、Ticketは旧バージョンのどこかにまだ使われているのです。コードをきれいにしないと...。

以下のように作りました。

 Symb=Symbol();                               // Название фин.инстр.
   Total=0;                                     // Количество ордеров
   int order[7];//буффер для семи ордеров
   int ord;//количество ордеров
   ArrayInitialize(order,0);//обнуляем количество ордеров
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symb)continue;      // Не наш фин. инструм
         if (OrderType()>1){Alert("Обнаружен отложенный ордер. Эксперт не работает.");return;}
         Total++;                               // Счётчик рыночн. орд
         if (Total>7){Alert("Более 7 ордеров. Эксперт не работает.");return;}
         Ticket=OrderTicket();                  // Номер выбранн. орд.
         Tip   =OrderType();                    // Тип выбранного орд.
         order  [OrderType()]++;                    // ПОЛУЧАЕМ КОЛИЧЕСТВО ОРДЕРОВ         
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
        }
     }
     ord=order  [OrderType()];

 while(true)                                  // Цикл закрытия орд.
     {
      if (Tip==0 && Cls_B==true)                // Открыт ордер Buy..
        {                                       //и есть критерий закр
         Alert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Bid,2);      // Закрытие Buy
         if (Ans==true){Alert ("Закрыт ордер Buy ",Ticket);if (ord ==0){Alert ("Закрыты все ордера ",ord);break;}}
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }

ポジションは完全に閉じています。確かにエラーゼロは出ますが、ドックでは「エラーなし」という意味だそうです。また、ログには「すべての注文が終了 しました」というメッセージは見当たりません。

変更した行を太字にしました。動作するようです、まだしっかり確認はしていません。

ループの仕組みがよくわからないのですが。ループの上と下と途中にコードがあるとします。ループの条件が一致した場合、ループの中だけでコードが実行され、ループより下のコード行を実行させない?この例から考えると、break 演算子はループを中断して いるのでしょうか?ループ以下の行の実行を許可しているのか、それともプログラムが最初から計算を始めているのか?

もし私が間違っているなら訂正してください:breakは それが入っているループを中断し、continue はその上の演算子の評価を実行 します。したがって、2番目の演算子がある場合、その評価は中断されるのか、それともcontinueが すべてのコードを中断して最初にそれを実行するようにプログラムを送るのか、明確ではありません。