[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 127

 
VOLDEMAR:
実際に動かしてみると、「ステップ*ポイントが現在の損失よりも大きくなってから利益が出る」ので、利益が一定のマイナスになることがわかります・・・。ブローカーの仕事のため ...すでに利益が確認されているので、TPを置くために何も聞かなかった・・・・・・・・。
あなたは変わった人ですね。私の投稿は、あなたの質問に対するもう一つの答えです。これもひとつの方法です。しかし、より視覚的に理解しやすくなっています。
 
初心者プログラマーに、OrderSelect 関数を使って最後に閉じた取引を選択する方法を教えていただけませんか?OrderSelect(1,SELECT_BY_POS,MODE_HISTORY) という方法でやってみましたが、どうもこの方法では注文が選択されないようです...。
 
誰か、このアドバイザーのアイデアを実現してください。

アイデアナンバー5 TS - オウンパターン ( サンプル ).そこには絵も描かれている。TSと取引基準はシンプルで

優秀なプログラマーであれば、それほど時間はかからないでしょう。誰も結果を見たいと思わないのか?
 
1:1のレバレッジテストの方法をご存知でしたら教えてください。
 

レバレッジ1倍でデモ口座を開設してみてください。そしてテストしてください。

うまくいくのか?


 
Moslift:
初心者プログラマーに、OrderSelect関数を使って最後に閉じた取引を選択する方法を教えていただけませんか?OrderSelect(1,SELECT_BY_POS,MODE_HISTORY) という方法でやってみたのですが、どうもこの方法では注文が選択されないようです...。


こちらもご覧ください: https://www.mql5.com/ru/forum/131859

-4ページ目
GetTypeLastClosePos - 最後に閉じたポジションの種類、または -1 を返す
GetTypeLastOpenPos - 最後にオープンしたポジションの種類、または -1 を返します。
isCloseLastPosByStop - Stopによってクローズされた最後のポジションのフラグを返します。
isCloseLastPosByTake - Takeによって最後のポジションをクローズするためのフラグを返します。
isLossLastPos - 最後の位置が失われたことを示すフラグを返します。
isTradeToDay - 今日の取引であることを示すフラグを返す
NumberOfBarCloseLastPos - 最後の位置の終値または-1を返します。
NumberOfBarOpenLastPos - 最後にオープンしたポジションのバー番号または-1を返します。
NumberOfLossPosToday - 今日決済された負けポジションの数を返します。
PriceCloseLastPos - 最後に決済したポジションの終値を返します。

 
Moslift:
初心者のプログラマーに、OrderSelect関数を使って最後に閉じた注文を選択する方法を教えてください。OrderSelect(1,SELECT_BY_POS,MODE_HISTORY) という方法でやってみたのですが、どうもこの方法では注文が選択されないようです...。

この方法で試してみてください。

   int      i, j;
   datetime t;
   for (i=0; i<OrdersHistoryTotal(); i++) {           // Цикл по закрытым ордерам терминала
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {// Если выбран ордер...
         if (OrderType()>1)               continue;   // ... если его тип не Buy и не Sell, переходим к следующему...
         if (OrderSymbol()!=Symbol())     continue;   // ... если его символ не соответствует символу графика - к следующему...
         if (OrderMagicNumber()!=Magic)   continue;   // ... если его магик не соответствует магику советника (в переменной Magic) - к следующему
         if (OrderCloseTime()>t) {                    // ... если время его закрытия больше предыдущего
            t=OrderCloseTime();                       // ... сохраним новое наибольшее время закрытия, ...
            j=i;                                      // ... сохраним индекс ордера в массиве закрытых ордеров
            }                   
         }
      }
   if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))     // На этом этапе j содержит индекс последнего закрытого ордера
      Print("Выбран последний закрытый ордер с тикетом ",OrderTicket());

なお、ループ内ではBuyまたはSellにのみチェックが入ります。うまくいけば、これをもとに他の注文の種類 を選択することができるようになります

ZS...手書きで書いていたので、どこかでミスがあったかもしれません...。

 

この機能が動作しない理由と動作させる方法を教えてください。


nomer_sdelki=OrderSend(Symbol(),OP_SELL,1,Bid,3,Bid-10*Point,Ask+10*Point,「私の注文番号」+1,16384,0,Green)。

------------------------------------------------------------------------------------------------------------------------

と、こんな感じです!!!

nomer_sdelki=OrderSend(Symbol(),OP_SELL,koefficent,Bid,3,0,0, "私の注文 #"+1,16384,0,Green) です。

つまり、ストップが設定されていない場合は動作します。

------------------------------------------------------------------------------------------------------------------------------

この機能も動作しないのですが、どうしたらいいですか?

OrderClose(nomer_sdelki,koefficent,Bid,3,Red)です。


-----------------------------------------------------------------------------------------------------------------------------------



 
leonid553:

レバレッジ1倍でデモ口座を開設してみてください。そしてテストしてください。

うまくいくのか?


センクス(ありがとうございます) :))
 

奇跡だ...。

メッセージがあったのに、なかったことに...。

これが必要なのか、と答えます。

// ----------------- SchBuyLs() ---------------------------------------------
//  Функция возвращает суммарный лот Бай-ордеров 
//----------------------------------------------
double SchBuyLs_b() {
   double SchBuyLs=0;
   int i;
   string SMB=Symbol();
   for (i=OrdersTotal()-1; i>=0; i--) {                  //Начало цикла
      if (!OrderSelect(i, SELECT_BY_POS)) WriteError(i);
      else  {                                            //начало работы с выбранным ордером
         if (OrderSymbol()!=SMB)    continue;
         if(OrderType()==OP_BUY)    SchBuyLs+=OrderLots();
         }                                               //конец работы с выбранным ордером
      }                                                  //Конец цикла
   return(SchBuyLs);                                     // При ошибке выбора ордера функция вернёт ноль
}
// ----------------------------------------------------------------------------