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

 

ロットで 小さいストップで 両建てして、勝ちポジションを選択するロボットは作れますか? それとも妄想でしょうか?

 

色でOK...

つまり、オープン演算子で設定するのではなく、エキスパート内部の変数に代入したいのです。

extern double TrailingStop=25.0;

extern double Lots=0.1;

....
double StopB;

.....

if(入力条件) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "Buy EA",123,0,Green);
StopB=Ask-TrailingStop*Lots; //hide
ストップ < - 正しい方法でやっているか?

}

.....

if(profit exit conditions|| Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //
close position
return(0); // exit
}
.

そして、SLの終了条件はどこに書けばいいのでしょうか?利益確定条件と一緒に"||"を使うか、別々にするか?

 

こんにちは!iCustom機能の正しい使い方を教えてください!ヒストグラムの別ウィンドウに描画されるインジケーターの色でトレードの条件を作りたいのです。

color Oct_1=iCustom(NULL,0, "octava_1");

if ( Oct_1==Green)....など

コンパイル時に「'green' - 変数が定義されていません」というエラーが発生します。

回答いただけると幸いです)))

 

質問削除、大文字には意味がある)))

 
DOCTORS:

色でOK...

質問ですが、私は証券会社から「SLを隠したい」、つまり、オープニングオペレーターで設定せず、エキスパート内部の変数に割り当てたいのです。

extern double TrailingStop=25.0;

extern double Lots=0.1;

......
ダブル StopB;

.....

if(入力条件) {

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "Buy EA",123,0,Green);
StopB=Ask-TrailingStop*Lots; //hide
ストップ < - 正しい方法でやっているか?

}

.....

if(profit exit conditions|| Ask > StopB)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //
close position
return(0); // exit
}
.

そして、SLの終了条件はどこに書けばいいのでしょうか?利益確定条件と一緒に"||"を使うか、別々にするか?

私はプロではありませんが、同じことを疑問に思っていました。個人的にはこのように書きました(プロが来れば訂正します)

この部分は、オープンオーダーをピックアップし、ストップとテイクの値を変数に割り当てます。

// +----------------------------------------------------------------------+
//------- : функция поиска открытых ордеров по символу графика, подхват и установки уровней стопа и профита
double TradeSymbol()
   {
   int    TotalTradeSymbol = 0;
   int    SendGo           = 0;
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(StopLoss   > 0 && Bid < OrderOpenPrice()) {sl = NormalizeDouble(OrderOpenPrice() - StopLoss*Point, Digits);}  
          if(TakeProfit > 0)                           {tp = NormalizeDouble(OrderOpenPrice() + TakeProfit*Point, Digits);}
          }
        if(OrderType()== OP_SELL)
          {
          if(StopLoss   > 0 && Ask > OrderOpenPrice()) {sl = NormalizeDouble(OrderOpenPrice() + StopLoss*Point, Digits);}  
          if(TakeProfit > 0)                           {tp = NormalizeDouble(OrderOpenPrice() - TakeProfit*Point, Digits);} 
          }
        if(OrderStopLoss()   != sl){SendGo++;}
        if(OrderTakeProfit() != tp){SendGo++;}
        if(!UseVirtualTradeLevel && SendGo != 0) {OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,CLR_NONE);}
        TotalTradeSymbol++;
        }
      }
    return(TotalTradeSymbol);  
    }
// +----------------------------------------------------------------------+

この部分はテイクでチェックし、クローズします。

// +----------------------------------------------------------------------+
//------- : функция проверки тейкпрофита
void CheckTakeProfit()
   {
   if(tp == 0)return(0);
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(Bid > tp)
            {
            OrderClose(OrderTicket(), OrderLots(), Bid, SleepPage, Lime);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        if(OrderType()== OP_SELL)
          {
          if(Ask < tp)
            {
            OrderClose(OrderTicket(), OrderLots(), Ask, SleepPage, Lime);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        }
      }
    }
// +----------------------------------------------------------------------+

この部分は、停止時にチェックし、終了します

// +----------------------------------------------------------------------+
//------- : функция проверки стоплоса
void CheckStopLoss()
   {
   if(sl == 0)return(0);
   total=OrdersTotal();  
   for(cnt=0;cnt<total;cnt++)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
        {
        if(OrderType()== OP_BUY)
          {
          if(Bid < sl)
            {
            OrderClose(OrderTicket(), OrderLots(), Bid, SleepPage, Blue);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        if(OrderType()== OP_SELL)
          {
          if(Ask > sl)
            {
            OrderClose(OrderTicket(), OrderLots(), Ask, SleepPage, Blue);
            if(UseSound)PlaySound("ok.wav");
            }
          }
        }
      }
    }
// +----------------------------------------------------------------------+
追伸

プロフェッショナル - 独学を馬鹿にしてはいけない、もしかしたら違うかもしれない、でも私には効果がある・・・。

 
elmucon:

私はプロではありませんが、同じことを疑問に思っていました。個人的にはこのように書きました(プロの方、訂正してください)。

この部分は、オープンオーダーをピックアップし、ストップとテイクの値を変数に割り当てます。

この部分はテイクでチェックし、クローズします。

この部分は、停止時にチェックし、終了します

追伸

プロフェッショナル - 独学を馬鹿にしてはいけない、もしかしたら違うかもしれない、でも私には効果がある・・・。

事実上、すべて順調ですただ、入退場時におかしな点がいくつかあります。まあ、それにこのような戦略はスリッページから救われない。でも、どうもありがとうございました。
 

EAの現在のタイムフレームを決定する方法を教えてください。

タイムフレームがM1であれば、ある条件を満たす必要があり、タイムフレームがM5であれば、別の条件を満たす必要があるのです。

 
sss2019:

EAの現在のタイムフレームはどのように決定するのですか?

タイムフレームがM1であれば、ある条件を満たす必要があり、タイムフレームがM5であれば、別の条件を満たす必要があるのです。


Period()関数を 使用する
 
sss2019:

EAの現在のタイムフレームはどのように決定するのですか?

タイムフレームがM1であれば、ある条件を満たす必要があり、タイムフレームがM5であれば、別の条件を満たす必要があるのです。

if (Period()==1) return; //Условие минуток
if (Period()==5) bool working=true; //Условие пятиминуток
 
splxgf:


ありがとうございます。つまり、期間M1は値1に対応し、期間M5は値5に対応するので、期間H1は60に、期間H4は240に対応することがわかりますよね?

期間M1が選択されたときケース1、期間M15が選択されたときケース15という構成が必要なのですが、どうしたらいいでしょうか?それとも、ケース1、ケース2、ケース3の順番で行う必要があるのでしょうか?

  switch(Period())
    {
    case 1 : Ba = 60;
    case 5 : Ba = 12;
    case 15 : Ba = 4;
    case 30 : Ba = 2;
    case 60 : Ba = 1;
    }