何がいけないんですか? - ページ 4

 
sss2019:
他に何かあるのでしょうか?

と、これは自分で確かめればわかることです。
 
sergeev:

と、これは自分で確かめればわかることです。
なんでそんな渡し方するんだよ、苗字も聞いてないのに。ジョーカーだから令状も開かず、ポケットの中で黙ってペコペコするだけ。
 
スクラップルだけどね!それだ、そうだ、そうだ。
 

なぜこの注文は開かないのでしょうか、エラーは何ですか?

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int MaFastPeriod = 30;
extern int MaSlowPeriod = 90;
extern int StopLoss = 25;
extern int TakeProfit = 50;

int init()
  {

  }



int deinit()
  {

  }



int start()
  {
double MaFast = iMA(Symbol(),0,MaFastPeriod,0,MODE_EMA,PRICE_CLOSE,0);
double MaSlow = iMA(Symbol(),0,MaSlowPeriod,0,MODE_EMA,PRICE_CLOSE,0);
   
   if(OrdersTotal() == 0 && MaFast > MaSlow)
   {
   OrderSend(Symbol(),0,0.1,Ask,3,Ask+TakeProfit*Point,Ask-StopLoss*Point,"CommentA",0,0,Green);
   }else
   {
      if(GetLastError() != 0)
         {
         Alert("Ошибка", GetLastError());
         }
   }
   
   return(0);
  }
 
シグナルバーのみで取引を開始するには?

例えば、ある移動平均 線が別の移動平均線をクロスした場合、ある取引が開始されますが、この取引を終了すると、シグナルバーから数バー後でも、別の取引が開始されます。
 
sss2019:
シグナルバーのみで取引を開始する機能を実装するにはどうすればよいですか?

例えば、ある移動平均線が別の移動平均線をクロスした場合、ある取引が開始されますが、この取引を終了すると、シグナルバーから数バー後でも、別の取引が開始されます。
あなたは間違いなくgoogleから追放され、私たちのFAQからも追放されるでしょう。
まず、2つのMAのクロスオーバーのシグナルをどのように取得 するのでしょうか?

そして、open only one order site:mql4. comのようにググってみてください。
 

はい、1つの注文を開く方法はわかっているのですが、問題は、1つの注文を開いて、それが数時間後に閉じ、開くためのすべての条件がそのままである場合、すでにシグナルバーから遠く離れていても、別の注文が開かれることです。

リンク先を拝見させていただきます、ありがとうございました。

 
sss2019:

はい、1つの注文を開く方法はわかっているのですが、問題は、1つの注文を開いて、それが数時間後に閉じ、開くためのすべての条件がそのままである場合、すでにシグナルバーから遠くに行っていても、別の注文が開かれることです。

リンク先を見てみます、ありがとうございました。


注文を開けることができるようにフラグを設定しました。信号が入り、旗が許す。ポジションをオープンし、すぐにフラグを外します。しばらくするとポーズが閉じます。Expert Advisor はシグナルがあることを確認しますが、フラグは削除されます(注文を出すことは禁止されています) - その結果、注文は設定されません。

次のページシグナルがない場合はフラグを立てる(ポジションのオープンを許可する)。あるいは、新しい信号が出たら、すぐにフラグを立てる。しかし、2番目のケースでは、Expert Advisorは新しいシグナルを古いシグナルと区別することができるはずです。

 

drknn:



注文の開始を許可するフラグを設定します。信号が入り、旗が許す。ポジションをオープンし、すぐにフラグを外します。しばらくするとポーズが閉じます。Expert Advisor はシグナルがあることを確認しますが、フラグが削除されており(注文の設定が禁止されている)、その結果、注文は設定されません。

次のページシグナルがない場合は、フラグを立てる(ポジションを開くことを許可する)。あるいは、新しい信号が出たらすぐにフラグを立てる。しかし、2番目のケースでは、Expert Advisorは新しいシグナルを古いシグナルと区別することができるはずです。


どうもありがとうございます。この方法の方が普遍的だと思います。

ところで、注文が開始されたことをEAでアナウンスするにはどうしたらよいのでしょうか。これはOrderSelectを使えば実装できるかも?

 

ちょっと見てください。私が失敗して、注文が開けないんです。

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern int MaFastPeriod = 30;
extern int MaSlowPeriod = 90;
extern int StopLoss = 25;
extern int TakeProfit = 50;

int init()
  {

  }



int deinit()
  {

  }



int start()
  {
  double MyPoint = Point;
   if(Digits == 3 || Digits == 5)
      {
      MyPoint = Point * 10;
      }
      
double MaFast = iMA(Symbol(),0,MaFastPeriod,0,MODE_EMA,PRICE_CLOSE,0);
double MaSlow = iMA(Symbol(),0,MaSlowPeriod,0,MODE_EMA,PRICE_CLOSE,0);

   for(int SelectedOrder = 0; SelectedOrder < OrdersTotal(); SelectedOrder++)
      {
         bool Flag = false;
         if(OrderSelect(SelectedOrder,SELECT_BY_POS,MODE_TRADES)==True)
            {
            Flag = false;
            }
      }
   return(Flag);
   
   if(OrdersTotal() == 0 && MaFast > MaSlow && Flag == false)
      {
      OrderSend(Symbol(),0,0.1,Ask,30,Ask-StopLoss*MyPoint,Ask+TakeProfit*MyPoint,"CommentA",0,0,Green);
      }
   
   return(0);
  }