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

 

ごあいさつMQL4です。EAにスネークゲームを追加したい。

OnTimer()イベントの周期性を決定する秒数を1未満、例えば0.7に設定することは可能でしょうか?

あるいは、OnTick()での実行を遅らせないように、コードの一部を定期的に実行する他の方法は?

 
Andrey Sokolov:

ごあいさつMQL4です。EAにスネークゲームを追加したい。

OnTimer()イベントの周期性を決定する秒数を1未満、例えば0.7に設定することは可能でしょうか?

あるいは、OnTick()での実行を遅らせないように、コードの一部を定期的に実行する他の方法は?

https://docs.mql4.com/ru/eventfunctions/eventsetmillisecondtimer
EventSetMillisecondTimer - Работа с событиями - Справочник MQL4
EventSetMillisecondTimer - Работа с событиями - Справочник MQL4
  • docs.mql4.com
Указывает клиентскому терминалу, что для данного эксперта или индикатора необходимо генерировать события таймера с периодичностью менее одной секунды. нужно получать события таймера чаще, чем один раз в секунду. Если вам достаточно обычного таймера с периодом в несколько секунд, то используйте EventSetTimer(). Обычно эта функция должна...
 
Alexey Viktorov ありがとうございました。
 

以下のコードは、"牖漠摲牥湩 "と出力します。

テキストテストが出力されるはずです

Files' FilesTest' Files フォルダにあります。

関数は、ハンドルは正しく、それは1であり、すぐにGetLastErrorは エラー5008間違ったハンドル...と言います。

どうしたらいいのでしょうか?

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   core();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

  }
//+------------------------------------------------------------------+
void core()
  {
   string value = "", name = "";

   name =  "Test" + "\\test.csv";
   Print(FileIsExist(name));

   ResetLastError();

   int m_hendle = -1;
   m_hendle = FileOpen(name, FILE_READ | FILE_WRITE | FILE_CSV);
   if(m_hendle != INVALID_HANDLE)
     {
      Print((string)m_hendle + "    " + name + " [" + (string)FileSize(m_hendle) + "]"+ (string)GetLastError());
       while(!FileIsEnding(m_hendle))
        {
         string sCurrent = FileReadString(m_hendle);
         Print("sCurrent = ", sCurrent);
        }
      FileClose(m_hendle);
     }
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak:

以下のコードは、"牖漠摲牥湩 "と出力します。

"コロナウイルス "のようだ

 

こんにちは...私は4にMT5アドバイザーを変換してください助けてください。自分で勉強する気も必要性もない、複雑なら理解して忘れてしまう、あまり必要ない...。

すでに聞いているのですが、感想は学習方法についてだったり、設定や「グレイルエキスパート」を聞いたりしました。フォーラムを読みながら、それは人々が助けるように見えた...面白いのは、人々がお金のために、高価ではない何かをするために求めている場合...無料で助けて、私はちょうどお金を求めているとき、彼らはおそらく他人の手を使用して、無料でお願いしたい人を考えて...今ここにお金を持って、すぐに支払ったと気にしないだろうが、彼らはしない、とあなたが必要としないとき...スコアに簡単に、まだ...希望が最後を死ぬ。


後払いで、手に入れたら...。

ファイル:
Lift.mq5  9 kb
 
eKpuBu4:

こんにちは...私は4にMT5アドバイザーを変換してください助けてください。自分で勉強したいとも思わないし、複雑なら理解して忘れてしまうので、あまり必要ないのですが...。

残りはどこだ?

エキスパート.mqh>

SignalTRIX.mqh>のご紹介です。


SignalStoch.mqh>の場合。

TrailingFixedPips.mqh>。

MoneyFixedRisk.mqh>の場合。

 
こんにちは。私は、mql4プログラミングの知識があまりありません。
input double   Lots=0.01;     //Lots size
input int      Tprof=1000;     //TakeProfit
input int      TreilSt=100;    //Trailing Stop
input int      TrStKor=10;     //The size of the correction Trailing Stop
input int      Magik=1001012;  //Magic Number
extern int Bars_left = 5;
extern int Bars_right = 5;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static double Upf,Lowf;
   double Tupf=0,Tlowf=0;
   int i,k;
   for(i=2; i<100; i++)
     {
      Tupf=iCustom(Symbol(),0,"takbir",Bars_left,Bars_right,0,i);
      if(Tupf>0)
         break;
     }
   for(k=2; k<100; k++)
     {
      Tlowf=iCustom(Symbol(),0,"takbir",Bars_left,Bars_right,1,k);
      if(Tlowf>0)
         break;
     }
//----Open position
//if(i>0) Print("i = ", i, " k = ",k);
   int total=OrdersTotal();
/*if(total<1)
      {*/
    
   if(Ask>Tupf+15*_Point && Tupf!=Upf)
     {
      double StL=NormalizeDouble(Tlowf,_Digits);
      int ticket=OrderSend(NULL,OP_BUY,Lots,Ask,30,StL,Bid+Tprof*_Point,NULL,Magik,0,clrBlue);
      if(ticket<0)
        {
         Print("OrderSend error #",GetLastError());
        }
      else {Print("Ask=",Ask,"Upf=",Upf," StL=",StL); Upf=Tupf;}
     }
   if(Bid<Tlowf-15*_Point && Tlowf!=Lowf)
     {
      double StL=NormalizeDouble(Tupf,_Digits);
      int ticket=OrderSend(NULL,OP_SELL,Lots,Bid,30,StL,Ask-Tprof*_Point,NULL,Magik,0,clrRed);
      if(ticket<0)
        {
         Print("OrderSend error #",GetLastError());
        }
      else {Print("Bid=",Bid,"Lowf=",Lowf," StL=",StL);   Lowf=Tlowf;}
     }
// }
//----Trailing Stop operation
   for(int cni=0;cni<total;cni++)
     {
      if(!OrderSelect(cni,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderMagicNumber()==Magik && TreilSt>0)
        {
         if(OrderType()==OP_BUY)
           {
            if(Bid-OrderOpenPrice()>_Point*TreilSt)
              {
               if(OrderStopLoss()<Bid-_Point*TreilSt-TrStKor*_Point)
                 {
                  //--- modify order and exit
                  if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-_Point*TreilSt,OrderTakeProfit(),0,clrBlue))
                     Print("OrderModify error ",GetLastError());
                  return;
                 }
              }
           }
         if(OrderType()==OP_SELL)
           {
            if((OrderOpenPrice()-Ask)>_Point*TreilSt)
              {
               if(OrderStopLoss()>Ask+_Point*TreilSt+_Point*TrStKor)
                 {
                  //--- modify order and exit
                  if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TreilSt,OrderTakeProfit(),0,clrRed))
                     Print("OrderModify error ",GetLastError());
                  return;
                 }
              }
           }
        }
     }
  }

しかし、次のようなことを解決する方法がわかりません。

double StL=NormalizeDouble(Tupf,_Digits);

ストップロスは前回の "トップフラクタル "で設定する

そうでなければならない。

最後の下降フラクタルが破られた場合 - 下降フラクタルとブレークダウンの間の最大 価格にストップロスが設定されます。

最後の上限フラクタルが突破された場合 - 上限フラクタルとブレイクアウトの間の最低価格にストップロスが設定される

itimeを使ってフラクタル形成の時間を設定し、インデックスを定義しようとしますが、現在時刻に到達し、注文が開かれるまで、毎回バーを通過しながら現在時刻からフラクタルまで検索する方法が分かりません。

受注開始時に探した方がいいのでは?そして、ストップとndpを変更するために、順序の変更を通じて、しかし、どのように、私は理解することはできません。

やり方が分からないので、教えてほしい。プロフェッショナルの皆様、5分ほどお時間をいただけないでしょうか?

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
 
v0van1990:
よろしくお願いします。尊敬するプロの方々、5分ほどお時間をください。

ここで修正する必要があります

     {
      Tupf=iCustom(Symbol(),0,"takbir",Bars_left,Bars_right,0,i);
      if(Tupf>0)
         break;
     }
 
MakarFX:

ここを修正する必要があります。

この機能により、最後に形成されたフラクタルが規格外であるという情報を得ることができ、EAの冒頭でその規格外のフラクタルを変更します。

それとも、最後のフラクタルが貫通する前の高値や安値、あるいは新しいフラクタルが形成されたときの情報など、別の機能をインジケータに追加するべきでしょうか。

正しく理解できていますか?