アドバイザーを無料でお書きします - ページ 156

 
Valeriy Yastremskiy #:

テスターで見る場合は、実際の時間より遅い時間のテストを外すことができます。これはOnInitにあります。また、4kaではテスターで時刻を要求すると、テスターの時刻が正確に返されるのかどうか覚えていないのです。現在時刻を返すと思うので、テスターでは一度に注文を出すだけで終わりです。また、ローカルタイムをリクエストすると、現在のローカルタイムが表示されます。

テスターの5kにある......完全な環境のエミュレーターです。

分かりやすい説明ありがとうございます

 
以前のものは、残念ながらサイズが合いませんでした。コードベースをよく見て みると、私が必要としているものとほぼ同じものが見つかりました。

https://www.mql5.com/ru/code/10236

//+------------------------------------------------------------------+
//|                                                    i`lbeback.mq4 |
//|                                Copyright ? 2011, AM2 && Tiburond |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright ? 2011, AM2 && Tiburond"
#property link      "http://www.forexsystems.biz"

#define MAGIC  20110406

extern int  StopLoss    = 1300;   //???????? ??????
extern int  StartHour   = 21;     //??? ?????? ????????(???????????? ?????)
extern int  Distance    = 250;    //?????????? ?? ???? ??? ????????? ??????
extern int  Step        = 50;     //??? ????????? ???????
extern int  Count       = 4;      //?????????? ??????????????? ???????
extern int  Expiration  = 4;      //????? ????????? ??????
extern double  Lots     = 1;      //???
extern bool  MM         = true;   //?????????? ???????????????
extern double  TSP      = 5;      //????
extern bool  BU         = true;   //?????????? ?????? ??????? ? ????????? ? ??????? ???
extern int  BUHour      = 2;      //??? ????? ??????? ??????? ??????? ? ?????????

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int  init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int  deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int  start()
  {
   int  b=0,s=0,res;
   datetime  expiration = TimeCurrent()+3600*Expiration;
   double  BuyPrice=fND(Open[0]-Distance*Point);
   double  SellPrice=fND(Open[0]+Distance*Point);  
   for (int  i=OrdersTotal()-1;i>=0;i--)
     {
      if (OrderSelect(i, SELECT_BY_POS))
        {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
         if (OrderType()==OP_BUYLIMIT) b++;
         if (OrderType()==OP_SELLLIMIT) s++;
        }  
     }
   if (Hour()>BUHour && Hour()<StartHour && AllProfit()>0) ClosePositions();
   if (Hour()>BUHour && DayOfWeek() == 5) ClosePositions();  
   if (Hour()==StartHour && b<1 && DayOfWeek() != 5)
   for(i=1;i<=Count;i++)
    {
     {              
      res=OrderSend(Symbol(),OP_BUYLIMIT,fLots(),fND(Ask-(Distance*Point+i*Step*Point)),3,fND(BuyPrice-StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Blue);      
      Sleep(3000);
      if(res<0)
         {
            Print("??????: ",GetLastError());
         } else {
            RefreshRates();
         }    
     }
    }
        
   if (Hour()==StartHour && s<1 && DayOfWeek() != 5)
   for(i=1;i<=Count;i++)
    {  
     {              
      res=OrderSend(Symbol(),OP_SELLLIMIT,fLots(),fND(Bid+(Distance*Point+i*Step*Point)),3,fND(SellPrice+StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Red );
      Sleep(3000);
      if(res<0)
         {
            Print("??????: ",GetLastError());
         } else {
            RefreshRates();
         }    
     }
    }    
//----  
   return(0);
  }
//+------------------------------------------------------------------+
double  fND(double  d, int  n=-1)
  {  
   if (n<0) return(NormalizeDouble(d, Digits));
   return(NormalizeDouble(d, n));
  }
//+------------------------------------------------------------------+
double  fLots()
  {
   double  lot=Lots;
   double  lot_min =MarketInfo( Symbol(), MODE_MINLOT  );
   double  lot_max =MarketInfo( Symbol(), MODE_MAXLOT  );
   if (MM)
     {
      double  lot_step =MarketInfo( Symbol(), MODE_LOTSTEP );
      double  lotcost =MarketInfo( Symbol(), MODE_TICKVALUE );      
      double  dollarsPerPip=0.0;

      lot = AccountFreeMargin()*TSP/100.0;
      dollarsPerPip=lot/StopLoss;
      lot=fND(dollarsPerPip/lotcost, 2);      
      lot=fND(lot/lot_step, 0) * lot_step;
     }
   if (lot<lot_min) lot=lot_min;
   if (lot>lot_max) lot=lot_max;
   return(lot);
  }
//+------------------------------------------------------------------+
void  ClosePositions()
  {
   if(BU)
   for (int  i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol())
       {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
          {
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
          }
         Sleep(1000);
      }
    }
  }
//+------------------------------------------------------------------+
double  AllProfit()
  {
   double  Profit = 0;
   for (int  i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) Profit += OrderProfit();
    }
   return (Profit);
  }
//+------------------------------------------------------------------+


訂正のご協力をお願いします。このEAは、未決済の注文を強制的に決済することはありません。
最適化するためにTPとtrallが必要です。トロール、すべての制限が小さく閉じられるように、しかし、夜のノイズを収集します。
Советник по стратегии "Возврат".
Советник по стратегии "Возврат".
  • www.mql5.com
Ночной скальпер. EURUSD H1.
 
こんにちは。MT4用のEAで助けてくれる人。手動で出した注文に追従するような仕掛けのないEAが欲しい(マジックありでもなしでも)。ストップロスで注文が閉じられた場合、EAは同じ方向で指定したロット、SL、TPで新規注文を出します。テイクプロフィットで注文が閉じられた場合、EAは反対方向で 指定したロット、SL、TPで 新規の注文を出します。 もしかしたら、既成のソリューションがあるかもしれませんが、私は何も見つけることができませんでした。ありがとうございました。
 
Anton Yakovlev:
良いストラテジーをお持ちで、それを共有していただけるのであれば、EAを 書くことも可能です。
こんにちは、私はローソクの動き(パターン)に基づいて動作するインジケータが必要です。それを書くことは可能ですか、どのくらい、あなたの要求を渡す方法。
 
こんにちは。
mt4用のpipsアドバイザーを 作成することはできますか?
戦略:
2つの異なる指示の買い指値/売り指値注文を、互いにXの距離に設定し、ストップ、テイク、トロールを設定する。
例えば、こんな感じです。
価格がいずれかの指値にぶつかり、この注文がストップまたはテイクで閉じられた場合、反対側の指値はキャンセルされ、異なる2つの指値が再び設定されます。
EAパラメータ。
ロット
停止
取る
トロール
リミットスペーシング
マジック
スリッページ
 
Ivan Bielyi #:
2種類の異なる指示の買い指値/売り指値注文をスプレッド制限で設定することで

指値注文でスプレッドを制限するにはどうすればよいですか?

 
Evgeny Belyaev #:

また、リミッターのスプレッドはどのように制限するのですか?

つまり、例えばスプレッドが5pipsより大きい場合は、ペンディングオーダーを行わないようにしますが、あまりにも問題がある場合は、このパラメータをスキップすることができます。
 
Ivan Bielyi #:
つまり、スプレッドが5ポイントより大きい場合は、保留注文を出すべきではありませんが、非常に問題がある場合は、このパラメータをスキップすることができます。

何が言いたいの?彼らは今すぐには実行されない(彼らは限界である)。そして、いざ実行に移すとなると、スプレッドがまったく違うものになるのです。

 
Evgeny Belyaev #:

何が言いたいの?彼らは今すぐには実行されない(彼らは限界である)。そして、いざ実行に移すとなると、スプレッドがまったく違うものになるのです。

Dumb, then exactly without this parameter)))
 
Daniil Osipov #:
何を基準にし、どれだけ複雑なアルゴリズム なのか。

移動平均のトレンドを判断する

TrendUp := MAvg[1]>TrendUp[1] ? max(Up,TrendUp[1]) : Up
理由: