проверка условий должна происходить внутри OnTickХЗ Гляну, Вроде так и не так, отпишусь, я в инете ковырнул примерно что хотел, теперь бы разобраться, не могу понять, только эти все условия перед стартом вставлять проги или где то там
ну раз проста, так и решай ее простоЗадача проста, чтобы советник торговал например с 13-00 до 14-00ч
Выделенный красным код лучше сделать такну раз проста, так и решай ее просто
datetime date=TimeCurrent();
MqlDateTime struct_date;
TimeToStruct(date,struct_date);
struct_date.year; // год
struct_date.mon; // месяц
struct_date.day; // день
struct_date.hour; // час
struct_date.min; // минуты
struct_date.sec; // секунды
struct_date.day_of_week; // день недели (0-воскресенье, 1-понедельник, ... ,6-суббота)
struct_date.day_of_year; // порядковый номер в году (1 января имеет номер 0)
осталось сравнить текущее время с разрешенным и вперед)
MqlDateTime struct_date;
datetime date=TimeCurrent(struct_date);
А при чём тут язык программирования? Наверное стоит написать в ветку поиск советников.Как я устал сливать депозит, есть у кого дельный советник, на малых ставках
функция вычисляет минимальное кол-во пунктов для перевода ордера в безубытокВсем привет !
Подскажите пожалоста функцыю безубытка и трала .
int BreakevenPoint(double commission,double swap,double lot,int slippage)
{
//commission = OrderCommission()
//swap = OrderSwap()
//lot = OrderLots()
//spread - спред
//slippage - проскальзывание в пунктах
//point_value - стоимость пункта в валюте депозита
double unconditional_loss = commission;
if(swap<0)
{
unconditional_loss = unconditional_loss - swap;
}
int breakeven = (int)MathCeil(unconditional_loss/(lot*point_value)) + spread + slippage;
return(breakeven);
}
функция вычисляет минимальное кол-во пунктов для перевода ордера в безубыток
Код:int BreakevenPoint(double commission,double swap,double lot,int slippage) { //commission = OrderCommission() //swap = OrderSwap() //lot = OrderLots() //spread - спред //slippage - проскальзывание в пунктах //point_value - стоимость пункта в валюте депозита double unconditional_loss = commission; if(swap<0) { unconditional_loss = unconditional_loss - swap; } int breakeven = (int)MathCeil(unconditional_loss/(lot*point_value)) + spread + slippage; return(breakeven); }
//+------------------------------------------------------------------+
//| По Свечам.mq4 |
//| Copyright 2020, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
extern double Lots = 0.01; // лот
extern double KLot = 2; // умножение лота
extern double MaxLot = 100; // максимальный лот
extern double Risk = 10; // риск
extern int StopLoss = 0; // лось
extern int TakeProfit = 0; // язь
extern int Slip = 3; // реквот
extern int Shift = 1; // на каком баре сигнал индикатора
extern int Magic = 123; // магик
//-------------------------------------------------------------------+
extern string Comm = "";
//-------------------------------------------------------------------+
datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//-------------------------------------------------------------------+
Comment("");
//-------------------------------------------------------------------+
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
{
int r=0;
color clr=Green;
if(type==1 || type==3 || type==5)
{
clr=Red;
}
if(type==0 || type==2 || type==4)
{
clr=Blue;
}
r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,0,0,Comm,Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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()<2)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Lot()
{
double lot=AccountBalance()*Risk/100000;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderProfit()>0)
break;
if(OrderProfit()<0)
{
lot=OrderLots()*KLot;
break;
}
}
}
}
if(lot>MaxLot)
lot=Lots;
return(lot);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
{
bool cl;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==0 && (ot==0 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
}
if(OrderType()==1 && (ot==1 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(t!=Time[0])
{
CloseAll();
if(Close[1]>Open[1])
{
PutOrder(0,Ask);
}
if(Close[1]<Open[1])
{
PutOrder(1,Bid);
}
t=Time[0];
}
Comment("\n Lot: ",Lot());
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
я извиняюсь думал смогу сам добавит в советник эту функцыю , но у меня неполучаетса .
Подскажыте пожалоста как и куда прописать .
Вот код советника .
Код://+------------------------------------------------------------------+ //| По Свечам.mq4 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ extern double Lots = 0.01; // лот extern double KLot = 2; // умножение лота extern double MaxLot = 100; // максимальный лот extern double Risk = 10; // риск extern int StopLoss = 0; // лось extern int TakeProfit = 0; // язь extern int Slip = 3; // реквот extern int Shift = 1; // на каком баре сигнал индикатора extern int Magic = 123; // магик //-------------------------------------------------------------------+ extern string Comm = ""; //-------------------------------------------------------------------+ datetime t=0; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //-------------------------------------------------------------------+ Comment(""); //-------------------------------------------------------------------+ return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { Comment(""); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void PutOrder(int type,double price) { int r=0; color clr=Green; if(type==1 || type==3 || type==5) { clr=Red; } if(type==0 || type==2 || type==4) { clr=Blue; } r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,0,0,Comm,Magic,0,clr); return; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ 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()<2) count++; } } } return(count); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double Lot() { double lot=AccountBalance()*Risk/100000; for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderProfit()>0) break; if(OrderProfit()<0) { lot=OrderLots()*KLot; break; } } } } if(lot>MaxLot) lot=Lots; return(lot); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseAll(int ot=-1) { bool cl; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==0 && (ot==0 || ot==-1)) { RefreshRates(); cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White); } if(OrderType()==1 && (ot==1 || ot==-1)) { RefreshRates(); cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White); } } } } } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(t!=Time[0]) { CloseAll(); if(Close[1]>Open[1]) { PutOrder(0,Ask); } if(Close[1]<Open[1]) { PutOrder(1,Bid); } t=Time[0]; } Comment("\n Lot: ",Lot()); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+
Да все нормально разобрался, есть много хитростей как установить время, СПС всем кто откликнулсяВыделенный красным код лучше сделать так
таким образом имеем и переменную и структуру.Код:MqlDateTime struct_date; datetime date=TimeCurrent(struct_date);
есть шансы, но вопрос не в навыках, а в опыте трейдинга и удачеПросто идея. Сможет ли хороший программист перевести трейдинг с бэкстеста в трейдинг в реальном времени?
Я имел в виду торговать с EA, который работает только в тесте истории.есть шансы, но вопрос не в навыках, а в опыте трейдинга и удаче
а на демке не работает?Я имел в виду торговать с EA, который работает только в тесте истории.
Зависит от того что вы понимаете под трендом.Может кто подскажет, как в советнике задать условие наличия соответствующего тренда от последней стрелки индикатора?
Вложения
Тренд, в данном случае - это соответствующее (стрелке) движение, которое длится до появления противоположной.Зависит от того что вы понимаете под трендом.
Повышающиеся низины? просто движение вверх больше чем на N? свой вариант.
И вы забыли прикрепить индикатор. стрелки могут быть буферными, а могут быть объектными, подход немного отличается.