MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 91

 
Vitaly Muzichenko:
サイズで検索できないので、価格でソートする必要があります。グリッドが異なる場合があり、最大または最小のいずれかを見つけることができますが、最初と最後ではありません

マリナさんが投稿された機能のことです。

ラストオーダーは、時間によって決まります。

 
Alekseu Fedotov:

マリナさんが投稿された機能のことです。

ラストオーダーは、時間によって決まります。

すべて同時に発注されたので、14件の注文で1秒の差があるかもしれませんし、時間順には並べられず、価格順でしか並べられないのです。
 
Marina Korotkih:

私はこう呼びかけるから

GetOrderOpenPrice(Symbol(),OP_SELLSTOP,_Magic)
了解です。
 

プログラマーの皆様へこの問題を解くのを手伝ってください。エキスパートアドバイザーは、M15で取引を開始しますが、H1からも条件を取ります。H1の条件がM15で満たされると、いくつかのエントリーポイントが存在する可能性があります。実は、H1の条件が逆転するまでは、最初のエントリーポイントだけを使いたいんです。

k=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
} }.


if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // 買取

 
customer03:

プログラマーの皆様へこの問題を解くのを手伝ってください。エキスパートアドバイザーは、M15で取引を開始しますが、H1からも条件を取ります。H1の条件がM15で満たされると、いくつかのエントリーポイントが存在する可能性があります。実は、最初のエントリーポイントを、H1の条件が反対に変化しない限り、制限したいのです。

k=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates()。
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}


if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // 買付け

しかし、コードがない場合はどうでしょうか?特に、コードが明確でない。

具体的に何をしたいのですか?抽象的な表現ではなく、まさに「手に入れたいもの」。

 
customer03:

プログラマーの皆様へこの問題を解くのを手伝ってください。エキスパートアドバイザーは、M15で取引を開始しますが、H1からも条件を取ります。H1の条件がM15で満たされると、いくつかのエントリーポイントが存在する可能性があります。実は問題は、H1では条件が逆に変化しないのに、最初のエントリーポイントに限定したいのです。

k=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates()。
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}


if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // 買付け

近似的なアルゴリズム

bool flag = false;
bool flagH1 = true;
bool flagM15 = true;

if(!flag && flagH1 && flagM15)
{
  flag = true;
}

if(!flagH1 && flag)
flag = false;
 
Artyom Trishkin:

コードなしは?コードを理解しない理由は、それだけではありません。

具体的に何をしたいのですか?抽象的な表現ではなく、まさに「手に入れたいもの」。

Artyomさん こんにちは!目標は、H1にシグナルがある限り、M15でのエントリーを1回(最初のシグナル)に限定することです。
#property strict
extern double    Lot= 0.1;

extern int    stoploss=20;
extern int takeprofit=50;
// если stoploss и / или takeprofit = 0, то отключены.
//if stoploss and/or takeprofit = 0, are disconnected.



extern int  Magic = 99999999;
// уникальный номер, кот. советник метит свои ордера и впоследствии работает только с ними. При постановке на разные графики или т/ф, межики должны быть разными
extern int Slipp = 1;        
// величина максимально возможного проскальзывания.
//  slippage
extern int sec = 2000;
// количество миллисекунд сна советника между повторами отправки торгового поручения в случае неудачи
// number of milliseconds sleep of the EA between repetitions of sending a trade assignment in case of failure


//============================= Stochastic
input int InpKPeriod=13; // K Period
input int InpDPeriod=3; // D Period
input int InpSlowing=3; // Slowing

//============================= Stochastic
input int InpKPeriod1=13; // K Period
input int InpDPeriod1=3; // D Period
input int InpSlowing1=3; // Slowing





int A, a, b, i, ii, o;


    double SL, TP, op, stH0, stH1, stM0, stM1;
    bool c;
    datetime OldTime, Time0, opp;

int init()
  {    
  
   OldTime = iTime(NULL,Period(),0);
  
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  

                      
//====================================================================

stH0 = iStochastic(NULL,60,InpKPeriod,InpDPeriod,InpSlowing,MODE_EMA,1,MODE_MAIN,0);
stH1 = iStochastic(NULL,60,InpKPeriod,InpDPeriod,InpSlowing,MODE_EMA,1,MODE_MAIN,1);

stM0 = iStochastic(NULL,15,InpKPeriod1,InpDPeriod1,InpSlowing1,MODE_EMA,1,MODE_MAIN,0);
stM1 = iStochastic(NULL,15,InpKPeriod1,InpDPeriod1,InpSlowing1,MODE_EMA,1,MODE_MAIN,1);
  
//====================================================================  

          
b=0;
    for (i=OrdersTotal()-1;i>=0;i--)  
       {
        RefreshRates();
        if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
       }

      
if(  stM1 <= 20 && stM0 > 20  && stH0 > 70  && b==0   && opp != Time[0]) // покупка
      {
       opp = Time[0];

    RefreshRates();
    op = Ask;
   A = OrderSend (Symbol(), OP_BUY, Lot, Ask, Slipp, 0, 0, NULL, Magic, 0, Blue);
    o = GetLastError();
         while (A < 0 && o != 4109 && o != 132 && o != 133)
         {
          Print("Error =", o);
         Sleep(sec);
         RefreshRates();
         op = Ask;
         A = OrderSend (Symbol(), OP_BUY, Lot, Ask, Slipp, 0, 0, NULL, Magic, 0, Blue);
         o = GetLastError();
        }      
        
SL = op-stoploss*Point;
if (stoploss == 0) SL = 0;
TP = op+takeprofit*Point;
if (takeprofit == 0 ) TP = 0;        
        
    if (SL != 0 || TP != 0)
      {
    RefreshRates();
    if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
    c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
    o = GetLastError();
      while (c == false && o != 4109 && o != 132 && o != 133)
                  {
                   Print("Error =", o);
                  Sleep(sec);
                  RefreshRates();
                  if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
                  c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
                  o = GetLastError();
                  }  }          
     }

//---------------------------------------------------------------------------------------------------------+                          
b=0;
    for (i=OrdersTotal()-1;i>=0;i--)  
       {
        RefreshRates();
        if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
       }


if( stM1 >= 80 && stM0 < 80  &&  stH0 < 30   && b==0   && opp != Time[0]) // продажа
     {
     opp = Time[0];

      RefreshRates();
      op = Bid;
         A = OrderSend (Symbol(), OP_SELL, Lot, Bid, Slipp, 0, 0, NULL, Magic, 0, Red);
         o = GetLastError();
            while (A < 0 && o != 4109 && o != 132 && o != 133)
            {
             Print("Error =", o);
            Sleep(sec);
            RefreshRates();
            op = Bid;
            A = OrderSend (Symbol(), OP_SELL, Lot, Bid, Slipp, 0, 0, NULL, Magic, 0, Red);
            o = GetLastError();
            }    

SL = op+stoploss*Point;
if (stoploss == 0) SL = 0;
TP = op-takeprofit*Point;
if (takeprofit == 0 ) TP = 0;
        
        if (SL != 0 || TP != 0)
      {
        RefreshRates();
         if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
         c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
         o = GetLastError();
         while (c == false && o != 4109 && o != 132 && o != 133)
                  {
                   Print("Error =", o);
                  Sleep(sec);
                  RefreshRates();
                  if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
                  c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);                  
                  o = GetLastError();
                  } }
      }
      
    

   return(0);
   }      

  
//+------------------------------------------------------------------+
 
customer03:
Artyomさん こんにちは!目標は、H1にシグナルがある限り、M15でのエントリーを1回(最初のシグナル)に限定することです。

そこで、M15のヌルキャンドルでオープンポジションの 数を確認します。もし、すでにポジションを持っていて、M15のヌルキャンドルで開いているなら、それ以上開かないことです。
 

フォーラムの皆様、こんにちは。Metatrader4に内蔵されているトレーリングストップの値をEA内から設定する方法はありますか?私はこのことに興味があるのであって、内蔵のトレーリングストップとは独立したトレーリングストップの実行コードをExpert Advisorに追加することに興味があるわけではありません。

回答ありがとうございました。

 
Dr_G:

フォーラムの皆様、こんにちは。Metatrader4に内蔵されているトレーリングストップの値をEA内から設定する方法はありますか?私はこのことに興味があり、内蔵のトレーリングストップとは独立したトレーリングストップを実行するためのコードをEAに追加することには興味がありません。

回答ありがとうございました。

いいえ。