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

 
Michey25 >>:

что тут не так?

Короче этот советник я прикрепляю к часовому графику, и если цена в начале часа выше чем cn1 а текущая не привышает её на 8 пунктов то ордер должен открыться (также если цена ниже текущего уровня) А он у меня почему-то сразу открывает позицию. Почему?

また、8ポイントの条件はどこに書かれているのでしょうか? 8をMarketInfo(NULL,MODE_POINT)で掛ける方が良いです。

 
splxgf >>:

А где записано условие на 8 пунктов? лучше восемь умножать на MarketInfo(NULL,MODE_POINT);

(a-cn1)<0.0008)

 
エキスパートPYLOSEは、指定された金額のときに特定のMAGIKOMで注文を閉じ、EA Trailingは、それが与えられた量に達したときに株式をトレール。ヘルプ私はPYLOSEにTrailingからいくつかのコードを挿入し、それもトレール、しかしそれは指定された量に達したときに与えられたMAGIKOMで注文を閉じない。そしておそらく画面に表示トレイリングファンドに関するコメント。
ファイル:
archive_1.zip  10 kb
 

Michey25


私が回答したときは、コードが少し違っていました;)

疑問点もありますが、op(0)の結果は現在の時間軸に大きく依存します。cnがどこから来て、どのようなタイプなのかが明確でないのです。

Alert(Open[0],cn1,Open[0]<cn1,a,(a-cn1)<0.0008) は作れないのでしょうか?

また、i=1 の代わりに break を使用すると、すべてのコマンドを最後まで実行する代わりに、ループを直ちに終了させることができます。

int i=0;
   double a,b;
   while (i==0)
   {
     a=MarketInfo("USDCAD", MODE_ASK);
     b=MarketInfo("USDCAD", MODE_BID); 
     if((Open[0]<cn1)&&((a-cn1)<0.0008))
      {
       OrderSend("USDCAD",OP_BUY,1,a,1,SL,cn2);
       i=1;
       }
     if((Open[0]>cn11)&&((cn11-b)<0.0008))
      {
       OrderSend("USDCAD",OP_SELL,1,b,1,SL1,cn21);
       i=1;
      }  
   }
 

こんにちは。次のようなことを実装したいので、よろしくお願いします。1つのEAに2つの独立した条件があり、それに基づいて別々の注文が出され、それぞれが独自の魔法を持つ。1つのチャート上の任意の時間に、それぞれの条件について1つだけ注文があり、それらは互いに同時に存在することができます。オープンオーダーの可能性を確認するために、私は次のような構成にしています。

int CalculateCurrentOrders(string symbol)
  {
   int buys=0, sells=0, buystop=0, sellstop=0;
//----
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && (OrderMagicNumber()== MAGIC1 || OrderMagicNumber()== MAGIC2))
              {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
          if(OrderType()==OP_BUYSTOP)  buys++;
         if(OrderType()==OP_SELLSTOP) sells++;
        }
     }
//----
   if( buys>0) return( buys);
   else       return(- sells);

しかし、注文は2つ目のマジックで開けるだけです。

そして、オーダーもそれぞれ独立してクローズされる。 同時に、1つ目のマジックを使ったオーダーはトレイルを使用し、2つ目のマジックは使用しない

この例では、クロージングが第1条件と第2条件のどちらにも当てはまらないか、あるいは全く当てはまらないかのどちらかです。

 

  for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) 
      if(OrderSymbol()==Symbol() && OrderMagicNumber()== MAGIC1)
     if(OrderType()==OP_BUY) 
     if ( Sell1==1)
             {
              OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
              return(0);
             }
                     
      if(OrderType()==OP_SELL) 
      if ( Buy1==1)
             {
              OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
              return(0);
             }
  
      if(OrderType()==OP_BUYSTOP && Sell1==1)
         {
         OrderDelete(OrderTicket());
         return(0);
         }
      if(OrderType()==OP_SELLSTOP && Buy1==1)
         {
         OrderDelete(OrderTicket());
         return(0);
         }
    }
   
   for(int i2=0; i2<OrdersTotal(); i2++)
     {
      if(OrderSelect( i2, SELECT_BY_POS, MODE_TRADES)) 
   
         if(OrderSymbol()==Symbol() && OrderMagicNumber()== MAGIC2)
     if(OrderType()==OP_BUY)
      if ( Sellcl0==1)
       {

       OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
              return(0);
            }
                 
    if(OrderType()==OP_SELL) 
    if ( Buycl0==1)
    
            {
              OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
              return(0);
          
        }
     if(OrderType()==OP_BUYSTOP) 
     if ( Sellcl0==1)
         {
         OrderDelete(OrderTicket());
         return(0);
         }
      if(OrderType()==OP_SELLSTOP && Buycl0==1)
        {
         OrderDelete(OrderTicket());
        return(0);
         }
      }   
    
     // MODIFICATION -------
     
     TrailingPositionsBuy( parab);
    TrailingPositionsSell( parab);
   // TrailingPositionsBuystop(parab);
   // TrailingPositionsSellstop(parab);
    return (0);
   }
/*bool ExistPositions() {
   for (int i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {
            return(True);
         }
      } 
   } 
   return(false);
}*/
     
void TrailingPositionsBuy(double parab) { 
   for (int i=0; i<OrdersTotal(); i++) { 
      if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { 
         if (OrderSymbol()==Symbol() && OrderMagicNumber()== MAGIC1) { 
            if (OrderType()==OP_BUY) { 
             //  if (Bid-OrderOpenPrice()>trailingStop*Point) { 
              //    if (OrderStopLoss()<Bid-trailingStop*Point) 
                     ModifyStopLoss( parab);
                                   
               } 
            } 
         } 
      } 
   } 
//} 
void TrailingPositionsSell(double parab) { 
   for (int i=0; i<OrdersTotal(); i++) { 
      if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) { 
         if (OrderSymbol()==Symbol() && OrderMagicNumber()== MAGIC1) { 
            if (OrderType()==OP_SELL) { 
             //  if (OrderOpenPrice()-Ask>trailingStop*Point) { 
             //     if (OrderStopLoss()>Ask+trailingStop*Point || OrderStopLoss()==0)  
                     ModifyStopLoss( parab);
                  
               } 
            } 
         } 
      } 
   } 

Sell1、buy1、sellcl0、buycl0 は終了条件の記述である。


このようなポジションの二重上書きは全く機能しないのでしょうか?ありがとうございました。

 
exolon >>:

Здравствуйте. Помогите пожалуйста реализовать такую вещь. В одном эксперте работают 2 независимых условия, на основе которых открываются отдельные ордера, каждый со своим magic. В каждый момент времени на одном графике может быть только один ордер по каждому из условий, при этом они могут быть одновременно друг с другом. Для проверки возможности открытия ордеров делаю такую конструкцию

Но открываются ордера только со вторым magic.

Далее, закрываются ордера тоже независимо друг от друга. При этом ордер с первым magic использует трал, а второй нет

Применил вот такой вариант, но закрытия либо происходят не по правилам ни от первого, ни от второго условия, либо не происходят вообще

sell1, buy1, sellcl0, buycl0 - описания условий на закрытие.


Будет ли вообще работать такой двойной перебор позиций? Благодарю!


オーダーをクローズして削除した後、リターニーを削除して関数の最後に置くか、代わりにコンティニュアスを置く

 

こんにちは、私は初めてmqlプログラムを書き、同時に言語も学んでいます。

私は語学を勉強しているのですが、アドバイスをいただけないでしょうか?


質問な ですが、初めてmqlのプログラムを書く場合、何が問題なのか知りたいんです。何が問題なのか、教えてください。参考書を見ながら4時間かけて、自分でも理解できていない。


void CheckSell()
{
while(!(NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
{
Sleep(5);
RefreshRates();
}
Sell();
}

 
Jahspear писал(а)>>

こんにちは、私は初めてmqlプログラムを書き、同時に言語も学んでいます。

私は語学を勉強しているのですが、アドバイスをいただけないでしょうか?

質問なんですが、初めてmqlのプログラムを書く場合、何が問題なのか知りたいんです。何が問題なのか、教えてください。4時間くらい参考書をつつきました、よくわかりません。

void CheckSell()
{
while(!(NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
{
Sleep(5);
RefreshRates();
}
Sell();
}

そして、何のためにループをしたのか。もし条件が整わなければ、信号が現れるまで未知の日数を待つべきではありません。

 

こんにちは。

インディケータはIndicatorShortName("iC_C_mod, ......")を持ちます。

しかし、このキャプションの他に、インジケーターウィンドウに動的に変化する変数のコメントを挿入する必要があります。

f-iコメント() のように。

インジケーターウィンドウには必要だが、チャートには必要ない。

アドバイスをお願いします。

 
Jahspear >>:



void CheckSell()
{
if((NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
Sell();
}


最近のハードウェアでは無限ループに非常に時間がかかるので、おそらくこのようなものでしょう。