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

 
FoxUA:

正確な意味ではないかもしれませんが、BalansEURUSD 変数に利益または損失をパーセントで表示さ せる必要があります"BalansEURUSD =5%"、こんな感じ です。

などなど、あと数組、例えばポンドとドロレーンとか。

一度


の方が難しいですが、計算することは可能です。

売り注文の場合

profit=NormalizeDouble((OrderOpenPrice()-Ask)*MarketInfo("EURUSD",MODE_TICKVALUE)*OrderLots() /Point,2) です。

margin=NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck("EURUSD",OP_SELL,OrderLots(),2));

をBUYにしました。

profit=NormalizeDouble((Bid-OrderOpenPrice())*MarketInfo("EURUSD",MODE_TICKVALUE)*OrderLots()/Point,2) となります。

margin=NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck("EURUSD",OP_BUY,OrderLots(),2));

これらは、この注文の注文+マージンの利益を計算するための完全な式であり、マージンは、注文が閉じている場合は、リリースされたマージンは、バランスに追加されるため、考慮する必要がありますお金は、数値的に増加しますが、実際の利益はされていない可能性があります。

 

みんな、1つの保留中の注文を トリガーして、別の注文を出す方法を教えてくれませんか?オーダーセレクトで試したのですが、うまくいきません......

order type == buy, // where buystop was earlier
open pending order // (it doesn't open.)

 
VOLDEMAR:

ある保留中の注文をトリガーして、別の注文を出す方法を教えてください。オーダーセレクトでやろうとしたのですが、うまくいきませんでした・・・・・・・・。

order type == buy, // 以前はbystopであったところ。
オープン・オブ・ペンディング・オーダー // (オープンしない)


もしあれば、(先に設定した)保留中の注文が成行となったことを意味し、次の注文(必要な別の保留中の注文、例えば:買い注文が成行なら、バイストップを出す、など)を出します。を読むことをお勧めします。

alpariウェブサイト上 - FXトレーニング - トレーダーズマニュアル - オートトレーディングMKL4(左側のパネル) - トレーディングアドバイザー - (オーダーセレクト、オーダーエンド、条件演算子など)。

http://www.alpari.ru/ru/school/textbook/autotrading/expert_advisors/- 簡潔で情報量が多い...

 

プログラミングを勉強中なのですが、教えてください。 Expert Advisorで以下の条件が満たされないのではないかと思うのですが、教えてください。

while (B*Point >zmm)
Comment("差分値 ", B);
OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point, "macd sample",16384,0,Green);

どのように確認するのか、どのような方法があるのか。 また、ティックが効かない時は可能でしょうか?

 

専門家の皆様へEAの書き方を勉強中です。使えるけど、全部じゃない。注文の変更と終了のブロックが機能しない。その理由が見つからない。とお願いしています。

//+------------------------------------------------------------------+
//|                                                Monetny dvor1.mq4 |
//|                                                            fanat |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "fanat"
#property link      "http://www.metaquotes.net"

extern int TakeProfit=484; //
extern int StopLoss=89;    //
extern bool BStop=true;    //Включение безубытка
extern int Stop=90;        //            
//+------------------------------------------------------------
int start()
{//1
   
if(TakeProfit<10){Alert("Ошибка,Take слишком близко");return;}
if(StopLoss<10){Alert("Ошибка,StopLoss слишком близко");return;}
   
bool Buy=false;
bool Sell=false;
if(Close[0]>High[1])Buy=true;
if(Close[0]<Low[1])Sell=true;

int err;
int Order_Count[6];
int OP=-1;
ArrayInitialize(Order_Count,0);                             
         
for(int i=0;i<=OrdersTotal();i++)       //
  {//2                                   // Блок учета ордеров
   if(OrderSelect(i,SELECT_BY_POS)==true)//
    {//3                                 //
     Order_Count[OrderType()]++;         //
     if(OP!=-1)return(Order_Count[OP]);  //
    }//3
  }//2  
     if(OrdersTotal()>0)
      {//2
       if(BStop==true&&OrderOpenPrice()!=OrderStopLoss())                                                //Модификация ордеров
        {//3                                                                                             //
         if((OrderType()==0&&(Ask-OrderOpenPrice())>Stop)||(OrderType()==1&&(OrderOpenPrice()-Bid)>Stop))//
          {//4                                                                                           // 
           int ticket=OrderTicket();                                                                     // 
           double Price=OrderOpenPrice();                                                                //
           double SL=OrderOpenPrice();                                                                   //
           double TP=OrderTakeProfit();                                                                  //
           bool Ans=OrderModify(ticket,Price,SL,TP,0);                                                   //
           
           if(Ans==false){err=GetLastError();Alert(err);Sleep(500);return;}                              //Обработка ошибок
          }//4
        }//3
          
                                                                                                                                                                                                                                                                                                                                       // 
       if(OrderType()==1&&(Buy==true||Ask<OrderTakeProfit()||Bid>OrderStopLoss()))      //Условия закрытия ордеров Sell  
        {//3
         ticket=OrderTicket();                             //Закрытие ордеров Sell                                                                         
         double Lots=OrderLots();                          //
         OrderClose(ticket,Lots,Ask,4);                    //
         
         err=GetLastError();                               //Обработка ошибок 
         if(err>0){Alert(err);Sleep(500);return;}          //                                                                              
        }//3
                                                           
       if(OrderType()==0&&(Sell==true||Bid>OrderTakeProfit()||Ask<OrderStopLoss()))      //Условия закрытие ордеров Buy 
       {//3
         ticket=OrderTicket();                             //Закрытие ордеров Buy                   
         Lots=OrderLots();                                 //  
         OrderClose(ticket,Lots,Bid,4);                    //
          
         err=GetLastError();                               //Обработка ошибок
         if(err>0){Alert(err);Sleep(500);return;}          //
       }//3
      }//2 
                   
   if(Buy==false&&Sell==false)return;
   int Total=1;
   double Lot=0.03;                 
/*  if(AccountBalance()>400)Lot=0.04;          //
   if(AccountBalance()>500)Lot=0.05;          //
   if(AccountBalance()>600)Total=2;           //
   if(AccountBalance()>800)Lot=0.04;Total=2;  // Блок вычисления лота для реала
   if(AccountBalance()>1000)Lot=0.05;Total=2; //
   if(AccountBalance()>1200)Lot=0.04;Total=3; //
   if(AccountBalance()>1500)Lot=0.05;Total=3; //
   if(AccountBalance()>1600)Lot=0.04;Total=4; //
   if(AccountBalance()>1800)Lot=0.03;Total=6;*/ //
   
   Lot=0.1;
   if(AccountBalance()>1600)Lot=0.2;
   if(AccountBalance()>2400)Lot=0.3;
                                                                                      
   if(Order_Count[OP_BUY]<Total&&Order_Count[OP_SELL]==0&&Buy==true)                     //Открытие ордеров Buy
   {//2                                                                                  //
      OrderSend(Symbol(), OP_BUY, Lot, Ask, 4, Ask-StopLoss*Point, Ask+TakeProfit*Point);//
       
      err=GetLastError();                                                                //Обработка ошибок
      if(err>0){Alert(err);Sleep(500);}                                                  //
      return;
   }//2         
           
   if(Order_Count[OP_SELL]<Total&&Order_Count[OP_BUY]==0&&Sell==true)                     //Открытие ордеров Sell 
   {//2                                                                                   //
      OrderSend(Symbol(), OP_SELL, Lot, Bid, 4, Bid+StopLoss*Point, Bid-TakeProfit*Point);//
      
      err=GetLastError();                                                                 //Обработка ошибок
      if(err>0){Alert(err);Sleep(500);}                                                   //
   }//2
  
return;
}//1

お願いしているのです。

 
fanat:

専門家の皆様へEAの書き方を勉強中です。使えるけど、全部じゃない。注文の変更と終了のブロックが機能しない。その理由が見つからない。とお願いしています。

お願いしているのです。


そろそろ機能に慣れてきた頃かもしれませんね。
 

それが問題なのです。

MathSrand(TimeLocal())。

int periodRandom=period+ MathRand()/10000;
int period2Random=period2+ MathRand()/10000。

Moving1=iMA(Symbol(),0,periodRandom,0,MODE_SMA,price,1) ;

Moving2=iMA(Symbol(),0,period2Random,0,MODE_SMA,price,1) となります。

振っている期間-期間+0~3のランダムな値をランダムに変更することにしました。

しかし、テスターでは、常に同じ利益値が表示されます。もしかしたらピリオドが変わらないかもしれない、何を間違えて保存したんだろう?

 

こんにちは!質問は簡単です:定数を介してではなく、2次元配列の2番目の次元を設定することは可能ですか?

つまり、double massiv[5][5] とすべきところ、double massiv[5][k] としたい。k は、例えば extern int k = 5 などで先に設定した既知の整数値である。1次元目はArrayResize関数で 変更できるのですが、2次元目がなぜか変更できません...。

 
fru1t:

こんにちは、私の質問は簡単です:定数を介して以外の方法で2次元配列の2番目の次元を指定することは可能ですか?

つまり、double massiv[5][5] とすべきところ、double massiv[5][k] としたい。k は既知の整数で、例えば extern int k = 5 などで先に定義されています。1次元目はArrayResize関数で変更できるのですが、2次元目がなぜか変更できません...。


#define k 5

https://docs.mql4.com/ru/basis/preprosessor/constant

 

専門家の皆さん、こんにちは。

左上のインジケーターサブウィンドウから情報を削除する方法を教えてください。

邪魔なんです。