[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 3

 

おっと)

おつかれさまでした

 

目利きの皆さん、こんにちは。

これはEAです。上下のフラクタルでポジションをオープン します。フラクタルの頂点から5pips高く(BUYの場合)、5pips低く(SELLの場合)ストップを作るにはどうすればよいですか?

P_up0=iCustom(0,0,"Ценовой канал", Chperiod,0,0);
   P_down0=iCustom(0,0,"Ценовой канал", Chperiod,1,0);
   P_up1=iCustom(0,0,"Ценовой канал", Chperiod,0,1);
   P_down1=iCustom(0,0,"Ценовой канал", Chperiod,1,1);
   Up=iCustom(0,0,"olyakish_fractals_02(для Skonti)",15,150,"Процент для отсеивания по объему",110,1,3);
   Down=iCustom(0,0,"olyakish_fractals_02(для Skonti)",15,150,"Процент для отсеивания по объему",110,3,3);
//задали все данные 

   total=OrdersTotal();
   if( total<1) 
     {
      // Проверка свободной маржи
      if(AccountFreeMargin()<(1000* Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // Условие открытие позиции BUY
      if( Up> Down)
        {
         Lots= GetSizeLot();
         ticket=OrderSend(Symbol(),OP_BUY, Lots,Ask,3,0,0,"",16384,0,Green);
         if( ticket>0)
           {
            if(OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
      // Условие открытие позиции SELL
      if( Up< Down)
        {
         Lots= GetSizeLot();
         ticket=OrderSend(Symbol(),OP_SELL, Lots,Bid,3,0,0,"",16384,0,Red);
         if( ticket>0)
           {
            if(OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
      return(0);
     }
    
   for( cnt=0; cnt< total; cnt++)
     {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   
         OrderSymbol()==Symbol())  
        {
         if(OrderType()==OP_BUY)   // длинная позиция открыта
           {
            // условие закрытие длинной позиции
            if( P_down1> P_down0|| Up< Down)
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 return(0); 
                }
            if( TrailingStop>0)  
              {                  
               if(Bid-OrderOpenPrice()>Point* TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point* TrailingStop && OrderStopLoss()!=OrderOpenPrice()+ X*Point)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ X*Point,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else 
           {
            // условие закрытия короткой позиции
            if( P_up1< P_up0|| Up> Down)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               return(0); 
              }
            if( TrailingStop>0)  
              {               
               if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
                 {
                  if(NormalizeDouble(OrderStopLoss(),Digits) != NormalizeDouble(OrderOpenPrice()- X*Point,Digits))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()- X*Point,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
           }
        }
     }
   return(0);
  }

ここではプライスチャネルを使用しました。

// условие закрытия короткой позиции
            if( P_up1< P_up0|| Up> Down)
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               return(0); 
              }
и
// условие закрытие длинной позиции
            if( P_down1> P_down0|| Up< Down)
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 return(0); 
                }

ポジションを開いたフラクタルのLまたはHの特定に苦労しているのです

こんな感じ!!!?

if (NormalizeDouble (MathAbs (High [ i]-5),Digits) < Price)
 
5の楽器はどれですか?
if (NormalizeDouble (MathAbs (High [ i]-5),Digits) < Price)

で、最下位桁の価格を掛けると

5*Point
 

ここで、私は失敗をした。ありがとうございます。

ポジションをオープンしたフラクタルのトップを設定 する方法について?

 
すべての疑問は、実験によって解決されます。スクリプトを書いて、それを実行するのです。
- 標準のiFractals() と以下のような違いがあります。
1.フラクタル指数による指標がHigh/Lowに正確に一致する。
2. フラクタルが存在しない値 ==0
int i;
   double f;
   for( i=0; i<50; i++) { f=iFractals(NULL,0,MODE_UPPER, i); if( f!=0) break;}
 Alert(f,"  ",High[i]," i=",i);
追伸:このサイクルでポジションから振り返り、ポジションオープンの瞬間に思い出してください。
datetime timeFractalOnOpenPos=Time[i]
 
EAでの表示方法がよくわかりません。ポジションを建てる ときに、このフラクタルは覚えておいてください。それから、どうやってクローズ条件で呼び出すのですか?
 
を呼び出す意味が不明である。
プログラムのグローバル変数に
-ポジションを開くためにバーフラクタル時間を覚えておく。 バーの時間を使用して、iBars()を介してバー番号を知っている。
-フラクタル価格を忘れるな
フラクタル価格を記憶する - アップ/ダウンを記憶する
で、もう一回どうするか?
 
言い方が悪かったかもしれませんね。 ただ、コードの書き方がわからないんです。
 
何回目の注文で、左右どちらに?
 

ぜんぷく

double UfractalBuy,LfractalBuy;

買い注文を出すときに一番近いフラクタルを書き込む

int i; double f;

     if( ticket>0)
           {
            if(OrderSelect( ticket, SELECT_BY_TICKET, MODE_TRADES)) 
            {
            Print("BUY order opened : ",OrderOpenPrice());
  
   for( i=0; i<50; i++) { f=iFractals(NULL,0,MODE_UPPER, i); if( f!=0) break;}
   UfractalBuy=High[ i];
   for( i=0; i<50; i++) { f=iFractals(NULL,0,MODE_LOWER, i); if( f!=0) break;}
   LfractalBuy=Low[ i];
            }
           }

買い注文の別条件を入力する

if(P_down1>P_down0||Up<Down||Close[0]+5*Point<LfractalBuy)