Нужна помощь в написании советника.

 

Нужна что бы он открывал позиции на покупку и продажу однавременно.

Лотом 0.1

После прохождения 5 пунктов открывался в две стороны снова.

И так до бесконечности.

+ при открытие должен ставить закрытие с профитом в 15 пунктов (можна и 50 вобщем со значением пока неопределился) автоматически на обе позиции.

Лосс значение не нужна


Вобщем интересна что покажет тест на этом :)




 
100% слив!!! Однозначно!!!
 
//+------------------------------------------------------------------+
//|                                      супер эксперт ТУДА-СЮДА.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
 
//---- input parameters
extern int       tp=15;
extern double       lots=0.1;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   static double lp;
   if(MathAbs(lp-Bid)>=Point*5){
      lp=Bid;
      OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,Ask+Point*tp);
      OrderSend(Symbol(),OP_SELL,lots,Bid,0,0,Bid-Point*tp);      
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
особенно интересно будет наблюдать на инструменте со спредом в 5 пунктов или более :о)
 

что то он неработает как нать, сделки неделает автаматически а если в ручную их подтверждать ругается на sl и tp неверные значение, хотя разбег в 30 пипсов стоит (эт я поменял) в оригинале тут 15

 
может на демо акаунтах неработает скрипт тока на реале ?

p.s а можна ещё стоп лосс 200 пунктов прикрутить к скрипту :)


вот что тест выдал.

Символ GBPUSD (Great Britan vs US Dollar)
Период 1 Час (H1) 2006.06.08 07:00 - 2006.07.24 15:00 (2005.01.01 - 2006.07.24)
Модель По ценам открытия (быстрый метод на сформировавшихся барах)
Параметры tp=15; lots=0.1;
Баров в истории 771 Смоделировано тиков 1442 Качество моделирования n/a
Начальный депозит 10000.00
Чистая прибыль 5280.00 Общая прибыль 11859.60 Общий убыток -6579.60
Прибыльность 1.80 Матожидание выигрыша 6.32
Абсолютная просадка 0.00 Максимальная просадка 6570.60 (30.07%) Относительная просадка 30.07% (6570.60)
Всего сделок 835 Короткие позиции (% выигравших) 418 (92.58%) Длинные позиции (% выигравших) 417 (99.52%)
Прибыльные сделки (% от всех) 802 (96.05%) Убыточные сделки (% от всех) 33 (3.95%)
Самая большая прибыльная сделка 15.00 убыточная сделка -409.50
Средняя прибыльная сделка 14.79 убыточная сделка -199.38
Максимальное количество непрерывных выигрышей (прибыль) 799 (11850.60) непрерывных проигрышей (убыток) 27 (-6505.60)
Максимальная непрерывная прибыль (число выигрышей) 11850.60 (799) непрерывный убыток (число проигрышей) -6505.60 (27)
Средний непрерывный выигрыш 201 непрерывный проигрыш 8


помучаю ещё :)
 
делалось только для тестера.
 
спасибо Дмитрий :)

а какой командой закрывать позицию ?
extern int stop=100; эта неподходит.
extern double stoploss = 100; и это тоже :(
 
  OrderSend(Symbol(),OP_BUY,lots,Ask,0,Ask-Point*sl,Ask+Point*tp);
  OrderSend(Symbol(),OP_SELL,lots,Bid,0,Bid+Point*sl,Bid-Point*tp);

Надо вот эти две строчки заменить и наверху добваить переменную extern int sl=100;

 
//+------------------------------------------------------------------+
//|                                      ????? ??????? ????-????.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
 
//---- input parameters
extern int       pnkt=5;
extern int       tp=5;
extern int       sl=50;
extern int       risk=1;
double bs,ss;
string sc;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
 if(!GlobalVariableCheck(StringConcatenate(Symbol(),"sw")))
 GlobalVariableSet(StringConcatenate(Symbol(),"sw"),
 MarketInfo(Symbol(),MODE_SWAPLONG)>
 MarketInfo(Symbol(),MODE_SWAPSHORT));
 if(!GlobalVariableCheck(StringConcatenate(Symbol(),"sl")))
 GlobalVariableSet(StringConcatenate(Symbol(),"sl"),
 MarketInfo(Symbol(),MODE_STOPLEVEL));
 if(!GlobalVariableCheck("mml"))
 GlobalVariableSet("mml",MarketInfo(Symbol(),MODE_MINLOT));
 if(!GlobalVariableCheck("ld")){
  if(GlobalVariableGet("mml")>=0.01&&GlobalVariableGet("mml")<=0.09)
  GlobalVariableSet("ld",2);
  if(GlobalVariableGet("mml")>=0.1&&GlobalVariableGet("mml")<=0.9)
  GlobalVariableSet("ld",1);
  if(GlobalVariableGet("mml")>=1)GlobalVariableSet("ld",0);
  }
 if(!GlobalVariableCheck("mxl"))
 GlobalVariableSet("mxl",MarketInfo(Symbol(),MODE_MAXLOT));
 if(!GlobalVariableCheck("lt"))
 GlobalVariableSet("lt",MarketInfo(Symbol(),MODE_LOTSIZE));
 if(!GlobalVariableCheck("al"))
 GlobalVariableSet("al",AccountLeverage());
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert lots function                                             |
//+------------------------------------------------------------------+
double lots()
 {
 double lot=NormalizeDouble(AccountEquity()/GlobalVariableGet("lt")
 *GlobalVariableGet("al")/100*risk,GlobalVariableGet("ld"));
 if(lot<GlobalVariableGet("mml"))lot=GlobalVariableGet("mml");
 if(lot>GlobalVariableGet("mxl"))lot=GlobalVariableGet("mxl");
 return(lot);
 }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
 {
//----
 sc=Symbol();
 if(!GlobalVariableCheck(StringConcatenate(sc,"lp")))
 GlobalVariableSet(StringConcatenate(sc,"lp"),Bid);
 if(MathAbs(GlobalVariableGet(StringConcatenate(sc,"lp"))-Bid)>=Point*pnkt){
   GlobalVariableSet(StringConcatenate(sc,"lp"),Bid);
   if(GlobalVariableGet(StringConcatenate(sc,"sw"))==1){bs=0.0;
   ss=Ask+MathMax(GlobalVariableGet(StringConcatenate(sc,"sw")),sl)*Point;}
   if(GlobalVariableGet(StringConcatenate(sc,"sw"))==0){ss=0.0;
   bs=Bid-MathMax(GlobalVariableGet(StringConcatenate(sc,"sw")),sl)*Point;}
   OrderSend(sc,0,lots(),Ask,MathRound((Ask-Bid)/Point),
   bs,Bid+Point*MathMax(tp,GlobalVariableGet(StringConcatenate(sc,"sl"))));
   OrderSend(sc,1,lots(),Bid,MathRound((Ask-Bid)/Point),
   ss,Ask-Point*MathMax(tp,GlobalVariableGet(StringConcatenate(sc,"sl"))));
  }
   //----
   return(0);
 }
//+------------------------------------------------------------------+
 
Inteqer и edddim спасибо за советы и помощь :)

edddim а можна написать коментарии к функциям советника если нетрудна :) заранее спасибо :)
Причина обращения: