beton2011

 
Уровень 14

  Моя торговля


График торгового счета beton2011


Группа "Стол заказов MQL"

Рейтинг 2154



РЕКОМЕНДУЮ



Советник по времени

Андрей *hi*  можно вас попросить написать простого советника. Советник должен открывать ордера в таком порядке, все ордера только на покупку или все ордера только на продажу или чередовать, покупка-продажа-покупка-продажа и т.д.

Скажем в советнике выбрали режим только на продажи, открывается первый ордер на продажу, через 5-ть минут этот ордер закрывается с любым результатом, сразу открывается новый ордер на продажу, этот ордер закрывается уже через 15-ть минут и опять открывается новый ордер на продажу но уже на 30-ть минут, вот в током порядке по всем таймфреймам открываются ордера.

Лучше всего наверно сделать в советнике настройку времени для каждого последующего ордера, скажем 10-ть настроек, что бы я смог оптимизировать настройки времени.

Надо еще сделать сброс таймфреймоф до начального по достижению профита в валюте депозита.

Добавьте еще мартингейла с настройкой, если прошлый ордер закрылся с убытком, тогда следующий ордер открывается с увеличенным лотом. Увеличение лотов сбрасывается до начального по достижению профита в валюте депозита.

Возможно потом можно переделать этот советник под торговлю опционами :) 
  • +1
  • Просмотров: 5797
  • 10 сентября 2015, 18:09
  • beton2011
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Открытие рыночного ордера по времени
10 сентября 2015
11 сентября 2015

Брокер для ваших роботов, 15 лет на рынке

Комментарии (26)

0
Завтра начну делать.
avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 10 сентября 2015, 19:17
0
Начал делать. Советник сложный предупреждаю сразу.
avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 11 сентября 2015, 14:20
0
Ок :) 
avatar

  14  beton2011 Автор Сообщений: 895

  • 11 сентября 2015, 14:55
+
0
Пока сделал без чередования и увеличения лота:


//+------------------------------------------------------------------+
//|                                                     TimeOpen.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property description "Time Open expert advisor"

#include <stdlib.mqh>

//--- Inputs
extern int    StopLoss       = 555; // лось
extern int    TakeProfit     = 555; // язь
extern int    BuySell        = 0;   // 0-бай. 1-селл. 2-бай/селл
extern double Lots           = 0.1; // лот
extern int    Slip           = 100; // проскальзывание
extern int    Count          = 1;   // количество открываемых ордеров
extern int    MAGIC          = 123; // магик
extern string t              = "Время";
extern int    t1             = 1;      // время 1
extern int    t2             = 5;      // время 1
extern int    t3             = 15;     // время 1
extern int    t4             = 30;     // время 1
extern int    t5             = 60;     // время 1
extern int    t6             = 240;    // время 1
extern int    t7             = 1440;   // время 1
extern int    t8             = 10080;  // время 1
extern int    t9             = 43200;  // время 1

int tf[9],k=0;
datetime
StartTime;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
 
{
//---
   
StartTime=TimeCurrent();

   tf
[0]=t1;
   tf
[1]=t2;
   tf
[2]=t3;
   tf
[3]=t4;
   tf
[4]=t5;
   tf
[5]=t6;
   tf
[6]=t7;
   tf
[7]=t8;
   tf
[8]=t9;
//---
   
return(INIT_SUCCEEDED);
 
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
 
{
//---

 
}
//+------------------------------------------------------------------+
int CountTrades()
 
{
   
int count=0;
   
for(int i=OrdersTotal()-1;i>=0;i--)
     
{
     
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
       
{
         
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
           
{
           
if(OrderType()==OP_BUY || OrderType()==OP_SELL) count++;
           
}
       
}
     
}
   
return(count);
 
}
//+------------------------------------------------------------------+
void OpenOrd()
 
{
   
int res,err;
   
double sl,tp;

//--- sell conditions
   
if(BuySell==1 || BuySell==2)
     
{
     
double bid=MarketInfo(OrderSymbol(),MODE_BID);
     
if(StopLoss>0) sl=NormalizeDouble(bid+StopLoss*Point,Digits);   else sl=0;
     
if(TakeProfit>0) tp=NormalizeDouble(bid-TakeProfit*Point,Digits);   else tp=0;
      res
=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(bid,Digits),Slip,sl,tp,"",MAGIC,0,Red);
     
if(res<0)
       
{
         err
=GetLastError();
         
Print("ОШИБКА ВЫСТАВЛЕНИЯ ОРДЕРА SELL: ",err,"(",ErrorDescription(err),")");
           
} else {
         
RefreshRates();
       
}
     
return;
     
}
   
Sleep(1000);

//--- buy conditions
   
if(BuySell==0 || BuySell==2)
     
{
     
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
     
if(StopLoss>0) sl=NormalizeDouble(ask-StopLoss*Point,Digits);   else sl=0;
     
if(TakeProfit>0) tp=NormalizeDouble(ask+TakeProfit*Point,Digits);   else tp=0;
      res
=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(ask,Digits),Slip,sl,tp,"",MAGIC,0,Blue);
     
if(res<0)
       
{
         err
=GetLastError();
         
Print("ОШИБКА ВЫСТАВЛЕНИЯ ОРДЕРА BUY: ",err,"(",ErrorDescription(err),")");
           
} else {
         
RefreshRates();
       
}
     
return;
     
}
   
Sleep(1000);
//---
 
}
//+------------------------------------------------------------------+
void CloseAll()
 
{
   
bool cl,sel;
   
for(int i=0; i<OrdersTotal(); i++)
     
{
      sel
=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
       
{
         
if(OrderType()==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
         
if(OrderType()==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
       
}
     
Sleep(1000);
     
}
 
}
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
 
{
   
if(CountTrades()<Count) OpenOrd();
   
if((TimeCurrent()-StartTime)>tf[k]*60)
     
{
      k
++;
     
CloseAll();
     
StartTime=TimeCurrent();
     
}

   
Comment("\n  Current Time: ",TimeToString(TimeCurrent(),TIME_SECONDS),
           
"\n  Start Time: ",TimeToString(StartTime,TIME_SECONDS),
           
"\n  Time Frame: ",tf[k],
           
"\n  K: ",k);
 
}
//+------------------------------------------------------------------+



avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 11 сентября 2015, 15:19
0
Прикольно получилось :) 

Вот только после девятого таймфрейма, советник начинает странно работать. Может сделайте так что бы после девятого таймфрейма переходил на первый таймфрейм или просто останавливался.
avatar

  14  beton2011 Автор Сообщений: 895

  • 11 сентября 2015, 16:02
0
Вот с увеличением лота и чередованием: www.opentraders.ru/downloads/867/

avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 11 сентября 2015, 16:05
+
0
Сейчас после 9 идет 1: www.opentraders.ru/downloads/867/

avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 11 сентября 2015, 16:31
+
0
Отлично <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 

Осталось только что бы советник переходил на первый таймфрейм после закрытия ордер с профитом.

И тогда будет все.
Редактирован: 11 сентября 2015, 17:41
avatar

  14  beton2011 Автор Сообщений: 895

  • 11 сентября 2015, 17:01
+
0
Ага? <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp;  www.opentraders.ru/downloads/867

//+------------------------------------------------------------------+
//|                                                     TimeOpen.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property description "Time Open expert advisor"

#include <stdlib.mqh>

//--- Inputs
extern int    StopLoss       = 555; // лось
extern int    TakeProfit     = 555; // язь
extern int    BuySell        = 0;   // 0-бай. 1-селл. 2-бай/селл
extern int    Slip           = 100; // проскальзывание
extern int    Count          = 1;   // количество открываемых ордеров
extern int    MAGIC          = 123; // магик

extern double Lots           = 0.1; // лот
extern double KLot           = 2;   // увеличение лота
extern double MaxLot         = 5.0; // максимальный лот

extern string t              = "Время";
extern int    t1             = 1;      // время 1
extern int    t2             = 5;      // время 1
extern int    t3             = 15;     // время 1
extern int    t4             = 30;     // время 1
extern int    t5             = 60;     // время 1
extern int    t6             = 240;    // время 1
extern int    t7             = 1440;   // время 1
extern int    t8             = 10080;  // время 1
extern int    t9             = 43200;  // время 1

int tf[9],k=0;
datetime
StartTime;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
 
{
//---
   
StartTime=TimeCurrent();

   tf
[0]=t1;
   tf
[1]=t2;
   tf
[2]=t3;
   tf
[3]=t4;
   tf
[4]=t5;
   tf
[5]=t6;
   tf
[6]=t7;
   tf
[7]=t8;
   tf
[8]=t9;
//---
   
return(INIT_SUCCEEDED);
 
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
 
{
//---

 
}
//+------------------------------------------------------------------+
int CountTrades()
 
{
   
int count=0;
   
for(int i=OrdersTotal()-1;i>=0;i--)
     
{
     
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
       
{
         
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
           
{
           
if(OrderType()==OP_BUY || OrderType()==OP_SELL) count++;
           
}
       
}
     
}
   
return(count);
 
}
//+------------------------------------------------------------------+
void OpenOrd()
 
{
   
int res,err;
   
double sl,tp;
   
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
     
double bid=MarketInfo(OrderSymbol(),MODE_BID);
     
//--- sell conditions
   
if(BuySell==1)
     
{
     
if(StopLoss>0) sl=NormalizeDouble(bid+StopLoss*Point,Digits);   else sl=0;
     
if(TakeProfit>0) tp=NormalizeDouble(bid-TakeProfit*Point,Digits);   else tp=0;
      res
=OrderSend(Symbol(),OP_SELL,Lot(),NormalizeDouble(bid,Digits),Slip,sl,tp,"",MAGIC,0,Red);
     
if(res<0)
       
{
         err
=GetLastError();
         
Print("ОШИБКА ВЫСТАВЛЕНИЯ ОРДЕРА SELL: ",err,"(",ErrorDescription(err),")");
           
} else {
         
RefreshRates();
       
}
     
return;
     
}
   
Sleep(1000);

//--- buy conditions
   
if(BuySell==0)
     
{      
     
if(StopLoss>0) sl=NormalizeDouble(ask-StopLoss*Point,Digits);   else sl=0;
     
if(TakeProfit>0) tp=NormalizeDouble(ask+TakeProfit*Point,Digits);   else tp=0;
      res
=OrderSend(Symbol(),OP_BUY,Lot(),NormalizeDouble(ask,Digits),Slip,sl,tp,"",MAGIC,0,Blue);
     
if(res<0)
       
{
         err
=GetLastError();
         
Print("ОШИБКА ВЫСТАВЛЕНИЯ ОРДЕРА BUY: ",err,"(",ErrorDescription(err),")");
           
} else {
         
RefreshRates();
       
}
     
return;
     
}
   
Sleep(1000);

//--- buy sell conditions
   
if(BuySell==2)
     
{
     
//--- sell conditions
     
if(LastDealType()==1 || LastDealType()==0)
       
{
         
if(StopLoss>0) sl=NormalizeDouble(bid+StopLoss*Point,Digits);   else sl=0;
         
if(TakeProfit>0) tp=NormalizeDouble(bid-TakeProfit*Point,Digits);   else tp=0;
         res
=OrderSend(Symbol(),OP_SELL,Lot(),NormalizeDouble(bid,Digits),Slip,sl,tp,"",MAGIC,0,Red);
         
if(res<0)
           
{
            err
=GetLastError();
           
Print("ОШИБКА ВЫСТАВЛЕНИЯ ОРДЕРА SELL: ",err,"(",ErrorDescription(err),")");
             
} else {
           
RefreshRates();
           
}
         
return;
       
}
     
Sleep(1000);

     
//--- buy conditions
     
if(LastDealType()==2 || LastDealType()==0)
       
{
         
if(StopLoss>0) sl=NormalizeDouble(ask-StopLoss*Point,Digits);   else sl=0;
         
if(TakeProfit>0) tp=NormalizeDouble(ask+TakeProfit*Point,Digits);   else tp=0;
         res
=OrderSend(Symbol(),OP_BUY,Lot(),NormalizeDouble(ask,Digits),Slip,sl,tp,"",MAGIC,0,Blue);
         
if(res<0)
           
{
            err
=GetLastError();
           
Print("ОШИБКА ВЫСТАВЛЕНИЯ ОРДЕРА BUY: ",err,"(",ErrorDescription(err),")");
             
} else {
           
RefreshRates();
           
}
         
return;
       
}
     
Sleep(1000);
     
}
//---
 
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealType()
 
{
   
int type=0;
   
if(OrdersHistoryTotal()==0)
     
{
      type
=0;
     
}
   
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     
{
     
if(OrderType()==OP_BUY)
       
{
         type
=1;//buy  
       
}
     
if(OrderType()==OP_SELL)
       
{
         type
=2;//sell  
       
}
     
}
   
return(type);
 
}
//+------------------------------------------------------------------+
void CloseAll()
 
{
   
bool cl,sel;
   
for(int i=0; i<OrdersTotal(); i++)
     
{
      sel
=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
       
{
         
if(OrderType()==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
         
if(OrderType()==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
       
}
     
Sleep(1000);
     
}
 
}
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double Lot()
 
{
   
double lot;
   
if(OrdersHistoryTotal()==0)
     
{
      lot
=Lots;
     
}
   
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     
{
     
if(OrderProfit()>0)
       
{
         lot
=Lots;
         k
=0;
       
}
     
if(OrderProfit()<0)
       
{
         lot
=OrderLots()*KLot;
       
}
     
}
   
if(lot>MaxLot || lot==0) lot=Lots;
   
return(lot);
 
}
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
 
{
   
if(k>9) k=0;
   
if(CountTrades()<Count) OpenOrd();
   
if((TimeCurrent()-StartTime)>tf[k]*60)
     
{
      k
++;
     
CloseAll();
     
StartTime=TimeCurrent();
     
}

   
Comment("\n  Current Time: ",TimeToString(TimeCurrent(),TIME_SECONDS),
           
"\n  Start Time: ",TimeToString(StartTime,TIME_SECONDS),
           
"\n  Time Frame: ",tf[k],
           
"\n  K: ",k,
           
"\n  Lot: ",Lot(),
           
"\n  Last Deal Type: ",LastDealType());
 
}
//+------------------------------------------------------------------+


Редактирован: 11 сентября 2015, 18:55
avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 11 сентября 2015, 18:39
0
Спасибо :) 
avatar

  14  beton2011 Автор Сообщений: 895

  • 11 сентября 2015, 19:08
+
0
Можете еще добавить, надо настройку начало чередование ордеров. Сейчас советник начинает чередовать только с продажи, а надо еще попробовать с покупок.

А вы можете сделать такой же советник для бинарных опционов?
avatar

  14  beton2011 Автор Сообщений: 895

  • 12 сентября 2015, 17:44
+
0
Я в понедельник буду один переделывать под бинарики, а потом уже ваш смотреть буду.
avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 12 сентября 2015, 18:35
0
Хорошо спасибо :) 
avatar

  14  beton2011 Автор Сообщений: 895

  • 12 сентября 2015, 18:44
+
0
Извините, вы можете хотя бы добавить режим чередования с покупок. Сейчас советник начинает чередовать с продаж.

Переделать под опционы я попробую сам.
Редактирован: 21 сентября 2015, 11:18
avatar

  14  beton2011 Автор Сообщений: 895

  • 21 сентября 2015, 11:17
0
Да, сейчас сделаю.
avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 21 сентября 2015, 11:44
+
0
Сейчас начинает с покупок, но это ничего не дает.


//+------------------------------------------------------------------+
//|                                                     TimeOpen.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property description "Time Open expert advisor"

#include <stdlib.mqh>

//--- Inputs
extern int    StopLoss       = 555; // лось
extern int    TakeProfit     = 555; // язь
extern int    BuySell        = 2;   // 0-бай. 1-селл. 2-бай/селл
extern int    Slip           = 100; // проскальзывание
extern int    Count          = 1;   // количество открываемых ордеров
extern int    MAGIC          = 123; // магик

extern double Lots           = 0.1; // лот
extern double KLot           = 2;   // увеличение лота
extern double MaxLot         = 5.0; // максимальный лот

extern string t              = "Время";
extern int    t1             = 1;      // время 1
extern int    t2             = 5;      // время 2
extern int    t3             = 15;     // время 3
extern int    t4             = 30;     // время 4
extern int    t5             = 60;     // время 5
extern int    t6             = 240;    // время 6
extern int    t7             = 1440;   // время 7
extern int    t8             = 10080;  // время 8
extern int    t9             = 43200;  // время 9

int tf[9],k=0;
datetime
StartTime;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
 
{
//---
   
StartTime=TimeCurrent();

   tf
[0]=t1;
   tf
[1]=t2;
   tf
[2]=t3;
   tf
[3]=t4;
   tf
[4]=t5;
   tf
[5]=t6;
   tf
[6]=t7;
   tf
[7]=t8;
   tf
[8]=t9;
//---
   
return(INIT_SUCCEEDED);
 
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
 
{
//---

 
}
//+------------------------------------------------------------------+
int CountTrades()
 
{
   
int count=0;
   
for(int i=OrdersTotal()-1;i>=0;i--)
     
{
     
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
       
{
         
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
           
{
           
if(OrderType()==OP_BUY || OrderType()==OP_SELL) count++;
           
}
       
}
     
}
   
return(count);
 
}
//+------------------------------------------------------------------+
void OpenOrd()
 
{
   
int res,err;
   
double sl,tp;
   
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
     
double bid=MarketInfo(OrderSymbol(),MODE_BID);
     
//--- sell conditions
   
if(BuySell==1)
     
{
     
if(StopLoss>0) sl=NormalizeDouble(bid+StopLoss*Point,Digits);   else sl=0;
     
if(TakeProfit>0) tp=NormalizeDouble(bid-TakeProfit*Point,Digits);   else tp=0;
      res
=OrderSend(Symbol(),OP_SELL,Lot(),NormalizeDouble(bid,Digits),Slip,sl,tp,"",MAGIC,0,Red);
     
if(res<0)
       
{
         err
=GetLastError();
         
Print("ОШИБКА ВЫСТАВЛЕНИЯ ОРДЕРА SELL: ",err,"(",ErrorDescription(err),")");
           
} else {
         
RefreshRates();
       
}
     
return;
     
}
   
Sleep(1000);

//--- buy conditions
   
if(BuySell==0)
     
{      
     
if(StopLoss>0) sl=NormalizeDouble(ask-StopLoss*Point,Digits);   else sl=0;
     
if(TakeProfit>0) tp=NormalizeDouble(ask+TakeProfit*Point,Digits);   else tp=0;
      res
=OrderSend(Symbol(),OP_BUY,Lot(),NormalizeDouble(ask,Digits),Slip,sl,tp,"",MAGIC,0,Blue);
     
if(res<0)
       
{
         err
=GetLastError();
         
Print("ОШИБКА ВЫСТАВЛЕНИЯ ОРДЕРА BUY: ",err,"(",ErrorDescription(err),")");
           
} else {
         
RefreshRates();
       
}
     
return;
     
}
   
Sleep(1000);

//--- buy sell conditions
   
if(BuySell==2)
     
{
     
//--- buy conditions
     
if(LastDealType()==2 || LastDealType()==0)
       
{
         
if(StopLoss>0) sl=NormalizeDouble(ask-StopLoss*Point,Digits);   else sl=0;
         
if(TakeProfit>0) tp=NormalizeDouble(ask+TakeProfit*Point,Digits);   else tp=0;
         res
=OrderSend(Symbol(),OP_BUY,Lot(),NormalizeDouble(ask,Digits),Slip,sl,tp,"",MAGIC,0,Blue);
         
if(res<0)
           
{
            err
=GetLastError();
           
Print("ОШИБКА ВЫСТАВЛЕНИЯ ОРДЕРА BUY: ",err,"(",ErrorDescription(err),")");
             
} else {
           
RefreshRates();
           
}
         
return;
       
}
     
Sleep(1000);

     
//--- sell conditions
     
if(LastDealType()==1 || LastDealType()==0)
       
{
         
if(StopLoss>0) sl=NormalizeDouble(bid+StopLoss*Point,Digits);   else sl=0;
         
if(TakeProfit>0) tp=NormalizeDouble(bid-TakeProfit*Point,Digits);   else tp=0;
         res
=OrderSend(Symbol(),OP_SELL,Lot(),NormalizeDouble(bid,Digits),Slip,sl,tp,"",MAGIC,0,Red);
         
if(res<0)
           
{
            err
=GetLastError();
           
Print("ОШИБКА ВЫСТАВЛЕНИЯ ОРДЕРА SELL: ",err,"(",ErrorDescription(err),")");
             
} else {
           
RefreshRates();
           
}
         
return;
       
}
     
Sleep(1000);      
     
}
//---
 
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int LastDealType()
 
{
   
int type=0;
   
if(OrdersHistoryTotal()==0)
     
{
      type
=0;
     
}
   
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     
{
     
if(OrderType()==OP_BUY)
       
{
         type
=1;//buy  
       
}
     
if(OrderType()==OP_SELL)
       
{
         type
=2;//sell  
       
}
     
}
   
return(type);
 
}
//+------------------------------------------------------------------+
void CloseAll()
 
{
   
bool cl,sel;
   
for(int i=0; i<OrdersTotal(); i++)
     
{
      sel
=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
       
{
         
if(OrderType()==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
         
if(OrderType()==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
       
}
     
Sleep(1000);
     
}
 
}
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double Lot()
 
{
   
double lot;
   
if(OrdersHistoryTotal()==0)
     
{
      lot
=Lots;
     
}
   
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     
{
     
if(OrderProfit()>0)
       
{
         lot
=Lots;
         k
=0;
       
}
     
if(OrderProfit()<0)
       
{
         lot
=OrderLots()*KLot;
       
}
     
}
   
if(lot>MaxLot || lot==0) lot=Lots;
   
return(lot);
 
}
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
 
{
   
if(k>9) k=0;
   
if(CountTrades()<Count) OpenOrd();
   
if((TimeCurrent()-StartTime)>tf[k]*60)
     
{
      k
++;
     
CloseAll();
     
StartTime=TimeCurrent();
     
}

   
Comment("\n  Current Time: ",TimeToString(TimeCurrent(),TIME_SECONDS),
           
"\n  Start Time: ",TimeToString(StartTime,TIME_SECONDS),
           
"\n  Time Frame: ",tf[k],
           
"\n  K: ",k,
           
"\n  Lot: ",Lot(),
           
"\n  Last Deal Type: ",LastDealType());
 
}
//+------------------------------------------------------------------+



avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 21 сентября 2015, 12:00
0
Сейчас начинает с покупок, но это ничего не дает.


Мне надо эти режимы для статистики. Вот например я протестировал советник на дневном
таймфрейме на 15-ти летней истории в любом режиме получилось максимум 11-ть убыточных ордеров подряд. Вот это уже можно использовать на опционах :) 

Было бы еще неплохо если вы добавите в советник настройку, после какого подряд убыточного ордера должен включатся мартингейл. Буду очень благодарен вам :) 
avatar

  14  beton2011 Автор Сообщений: 895

  • 21 сентября 2015, 12:55
+
0
Подумаю как это можно сделать.
avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 21 сентября 2015, 20:24
0
Хорошо.

Было бы вообще супер если вы в одном советнике совместите все режимы и добавите настройку после какого подряд убыточного ордера должен включатся мартингейл.

Тогда будет полноценный советник, и больше я вас не побеспокою <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
Редактирован: 21 сентября 2015, 21:03
avatar

  14  beton2011 Автор Сообщений: 895

  • 21 сентября 2015, 20:58
+
0
Матрешка готова :) 
www.opentraders.ru/downloads/867/

avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 22 сентября 2015, 13:02
+
0
Это грааль :)  для тех кто поймет как им пользоваться *good* 

Спасибо за работу *hi* 
avatar

  14  beton2011 Автор Сообщений: 895

  • 22 сентября 2015, 13:41
+
0
А тестить его здесь на FreeVPS будете?
Если нет желания, я могу потестить:)  только объясните что к чему:) 
avatar

  4  FashTsar Сообщений: 101

  • 22 сентября 2015, 23:22
+
0
Надо еще этот советник переделать под торговлю на бинарных опционах. Сегодня попробую сам переделать. Но я уже знаю что у меня не получаться переделать увеличение лота. Лучше всего если советник переделает Андрей, но я уже исчерпал свой лимит заказов в этом месяце.

Да и я не знаю, можно ставить советника на FreeVPS под торговлю на бинарных опционах.
avatar

  14  beton2011 Автор Сообщений: 895

  • 23 сентября 2015, 06:16
0
Лучше всего если советник переделает Андрей, но я уже исчерпал свой лимит заказов в этом месяце.


Если не получится переделать, разместите новый топик и я посмотрю что можно сделать.
avatar

  35  AM2 Сообщений: 16503 - Андрей

  • 23 сентября 2015, 18:52
0
Что касается отчётов, то в конце каждой недели выкладывать буду, как и в текущем тесте советника)
avatar

  4  FashTsar Сообщений: 101

  • 22 сентября 2015, 23:23
0
В ЛС ответьте только пожалуйста, а то потеряю эту тему, и ответ не увижу.
avatar

  4  FashTsar Сообщений: 101

  • 22 сентября 2015, 23:25

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Загрузка...