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

 

まあ基本的に戦略自体は非常に長く、複雑であり、それを説明する上でポイントはありません、それはループを作成するために1点だ、私はそれがSTに閉じている場合、要求と一致しない位置を開いていない合計==1の代わりに何かを見つける必要がある、すなわち......オープン1、で閉じている場合...... тпオープン2、市場での注文の条件欠如、それはすべてだ。

 
FoxUA:

まあ基本的に戦略自体は非常に長く、複雑であり、それを説明する上でポイントはありません、それはループを作成するために1点だ、私はそれがSTに閉じている場合、要求と一致しない位置を開いていない合計==1の代わりに何かを見つける必要がある、すなわち......オープン1、で閉じている場合...... тпオープン2、市場での注文の条件欠如、それがすべてです。


それなら、イゴールの機能を使わなければいいだけです。最後に決済された注文の種類と決済された理由を返す関数が必要です。あるタイプの最後のクローズドオーダーの理由を返すことはありません。 これから何か考えてみます...。

 
Figar0:


それなら、あなたが使っているイゴールの機能に合わないだけです。最後に決済された注文の種類と決済された理由(タップかスルか)を返す関数が必要です。あるタイプの最後のクローズドオーダーの理由を返すことはありません。これから何か考えてみます...。


Klimovskoeと同じように、最後のオーダークロージャーのみの値を返すものがあれば、非常にありがたいのですが......。
 

このような機能をイゴールの関数と組み合わせて試してみてください。

//+----------------------------------------------------------------------------+
//|  Версия   : 30.03.2011                                                     |
//|  Описание : Возвращает тип последней закрытой позиции                      |
//|  если Buy 1 , если Sell -1                                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    symbol - наименование инструмента                                       |
//|    magic - MagicNumber                                                     |
//+----------------------------------------------------------------------------+
int LastCloseDeal(string symbol, int magic) 
{
  int lastclosetime=-1;
  int lastcloseticket=-1;
  int lastdealtype=0;

  for (int i=0; i<OrdersHistoryTotal(); i++) 
  {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue; 
    if (OrderSymbol()==symbol || OrderMagicNumber()==magic) 
    {
      if (lastclosetime<OrderCloseTime()) 
      {
        lastclosetime=OrderCloseTime();
        lastcloseticket=OrderTicket();
      }
    }
  }

  if (OrderSelect(lastcloseticket, SELECT_BY_TICKET, MODE_HISTORY)) 
  {
    if (OrderType()==OP_BUY) lastdealtype=1;
    if (OrderType()==OP_SELL) lastdealtype=-1;   
  }
  return(lastdealtype);
}
 

このようなコードになります。

bool Buystop=isCloseLastPosByStop(NULL,OP_BUY,MagBuy);
bool BuyTake=isCloseLastPosByTake(NULL,OP_BUY,MagBuy);
bool Sellstop=isCloseLastPosByStop(NULL,OP_SELL,MagBuy);
bool SellTake=isCloseLastPosByTake(NULL,OP_SELL,MagBuy);

//--------------------------------------------------------------------------------+
if(total==1) 
 {

   if (LastCloseDeal(Symbol(), MagBuy)==1)

  {
      if(Buystop==True)    OpenPosition(NULL, OP_SELL, Lot,Bid+Sl3*Point, Bid-Tp3*Point,MagBuy);
      if(BuyTake==True)   OpenPosition(NULL, OP_BUY,  Lot, Ask-Sl*Point, Ask+Tp*Point,MagBuy);      
   }

   if (LastCloseDeal(Symbol(), MagBuy)==-1)

   { 
      if(Sellstop==True)   OpenPosition(NULL, OP_BUY,  Lot, 0, Ask+Tp*Point,MagBuy);
      if(SellTake==True)    OpenPosition(NULL, OP_BUY,  Lot, Ask-Sl*Point, Ask+Tp*Point,MagBuy); 
   }  

}

 
Figar0:

このようなコードになります。


ありがとう、やってみるよ。
 
こんにちは、指定したポイントでバーチャルストップを設定するのを手伝ってください。 より正確に言うと、新しいSLに関するデータを送る代わりに、EAはただ変数(または他のどこか)にそれらを格納し、トレール、トレールを続け、価格があるレベル(価格)に達すると、DCにシグナルを送って注文を閉じるべきです、(バーチャルストップロス付きのバーチャルトレールストップのようなもの)。つまり、Expert Advisorは、1pipからDCサーバーまでの見えないレベルでのトレーリングストップを含む... は現実的なのでしょうか?
 
Centuriy:
こんにちは、指定したポイントにバーチャルストップロスを設定するのを手伝ってください。 より正確に言うと、新しいSLに関するデータを送る代わりに、EAは単に変数(または他のどこか)にそれらを格納し、トレール、トレールを続け、価格が一定のレベルに達すると、注文を閉じることについて証券会社に信号を送ります(バーチャルストップロスを持つ一種の仮想トレールストップです)。つまり、Expert Advisorは、1pipからDCサーバーまでの見えないレベルでのトレーリングストップを含んでいます...は現実的なのでしょうか?


はい......もちろん、本物です。例えば、Xの価格で買い注文を出し、仮想ストップロスYポイントを設定し、現在の価格Z < = X-Y*Point であれば、注文はクローズ れるはずです。もちろん、スプレッドも考慮しなければならないし、ストップロスを固定ではなく計算する場合は、計算した値をどこかにしっかり保存しておかなければならないなど、様々な配慮が必要です。

バーチャルストップ」「バーチャルストップロス」などで検索してください。

 
Figar0:


もちろん現実的な話です。例えば、Xの価格で買い注文を出し、仮想ストップロスをYポイントとした場合、現在の価格Z <=X-Y*Point であれば、注文はクローズされることになります。もちろんスプレッドも考慮しなければならないし、ストップロスが固定ではなく計算されるのであれば、計算された値をどこかにしっかり保存しておかなければならないなど、様々な問題があります。

バーチャルストップ」「バーチャルストップロス」などで検索してください。

何らかの形で独自の受注簿を持たないとやっていけないと思います。

独自の注文配列を作成し、必要なすべての仮想ストップデータをその中に格納します。

 
Figar0:


はい......もちろん、本物です。例えば、Xの価格で買い注文を出し、仮想ストップロスYポイントを設定し、現在の価格Z < = X-Y*Point であれば、注文はクローズされるはずです。もちろん、スプレッドも考慮しなければならないし、ストップロスを固定ではなく計算する場合は、計算した値をどこかにしっかり保存しておかなければならないなど、様々な配慮が必要です。

バーチャルストップ」「バーチャルストップロス」などで検索してください。

返信ありがとうございます、問題はトレーリングストップ(trailing stop)だけです、1pip minをトレールしたいのですが、tick 毎に証券会社にorderModifyを送るのは、ただのフーリガニズムです IMHO ))。

"ストップロスを固定せず計算する場合は、計算値をどこかにしっかり保存しておく必要があります"。

どこに格納し、どのように呼び出すか...変数でなければならないと思うのですが、私の思い違いでしょうか...。