В ТЗ все четко прописано:
нужно пошагово скрины с пояснениями. больше тз вытягивать не буду.
В ТЗ все четко прописано:
double ld_100=NormalizeDouble(ld_24/Day_x/Point,0);
ld_0=NormalizeDouble(ld_100/2.0*Point,Digits);
ld_76 = NormalizeDouble(0.2 * ld_76 / Point, 0);
ld_84 = NormalizeDouble(ld_84 / 22.0 / Point, 0);
ld_92 = NormalizeDouble(ld_92 / 180.0 / Point, 0);
ilow_32=iLow(NULL,PERIOD_D1,0);
ihigh_40=iHigh(NULL,PERIOD_D1,0);
ld_116 = (ihigh_40 - Ask) / Point;
ld_124 = (Bid - ilow_32) / Point;
ld_8=iOpen(NULL,PERIOD_D1,0)+ld_0;
ld_16=iOpen(NULL,PERIOD_D1,0)-ld_0;
ld_132 = (ld_8 - Ask) / Point;
ld_140 = (Bid - ld_16) / Point;
g_dbl2str_368 = DoubleToStr(ld_100 / gi_556, 0);
g_dbl2str_376 = DoubleToStr(ld_68 / gi_556, 0);
g_dbl2str_384 = DoubleToStr(ld_76 / gi_556, 0);
g_dbl2str_392 = DoubleToStr(ld_84 / gi_556, 0);
g_dbl2str_400 = DoubleToStr(ld_92 / gi_556, 0);
g_dbl2str_472 = DoubleToStr(ld_8, Digits);
g_dbl2str_480 = DoubleToStr(ihigh_40, Digits);
g_dbl2str_488 = DoubleToStr(ilow_32, Digits);
g_dbl2str_496 = DoubleToStr(ld_16, Digits);
g_dbl2str_504 = DoubleToStr(ld_116 / gi_556, 0);
g_dbl2str_512 = DoubleToStr(ld_132 / gi_556, 0);
g_dbl2str_520 = DoubleToStr(ld_124 / gi_556, 0);
g_dbl2str_528 = DoubleToStr(ld_140 / gi_556, 0);
if(gi_552) DoADRHighLowLines(ld_8,ld_16);
только не понятно покупка или продажа
даи алерты не исчезают если переоткрыть сделку
input string BuyLoss="Лось по баям! Попробуй продать!";
input string SellLoss="Лось по селам! Попробуй купить!";
input string BuyProfit="Профит по баям! Можно еще купить!";
input string SellProfit="Профит по селам! Можно еще продать!";
//+------------------------------------------------------------------+
//| Igrun.mq4 |
//| Copyright 2019, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
input bool Alerts=1;
input string BuyLoss="Лось по баям! Попробуй продать!";
input string SellLoss="Лось по селам! Попробуй купить!";
input string BuyProfit="Профит по баям! Можно еще купить!";
input string SellProfit="Профит по селам! Можно еще продать!";
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| Результат последней сделки |
//+------------------------------------------------------------------+
int LastDealResult()
{
int result=0;
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderProfit()>0)
{
result=1;//tp
}
if(OrderProfit()<0)
{
result=2;//sl
}
}
return(result);
}
//+------------------------------------------------------------------+
//| Тип последней сделки |
//+------------------------------------------------------------------+
int LastDealType()
{
int type=8;
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderType()>0) type=OrderType();
}
return(type);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()<2) count++;
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
while(!IsStopped())
{
string s="лось";
if(LastDealResult()==1) s="язь";
if(Alerts && CountTrades()<1)
{
if(LastDealResult()==1 && LastDealType()==0) Alert(BuyProfit); Sleep(10000);
if(LastDealResult()==1 && LastDealType()==1) Alert(SellProfit); Sleep(10000);
if(LastDealResult()==2 && LastDealType()==0) Alert(BuyLoss); Sleep(10000);
if(LastDealResult()==2 && LastDealType()==1) Alert(SellLoss); Sleep(10000);
}
Comment("\n Результат последней сделки: ",s);
}
}
//+------------------------------------------------------------------+
По поводу готового советника- Вы мне раньше делали почти точно такой же советник, только он закрывает ордер целиком, а не частично, можно просто в нём поменять с полного закрытия на частичное
«1. Шеф всегда прав! 2. Если шеф не прав, смотри п.1.»
//+------------------------------------------------------------------+
//| Igrun.mq4 |
//| Copyright 2018, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
input bool Alerts=1;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| Результат последней сделки |
//+------------------------------------------------------------------+
int LastDealResult()
{
int result=0;
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
//if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderProfit()>0)
{
result=1;//tp
}
if(OrderProfit()<0)
{
result=2;//sl
}
}
}
return(result);
}
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
while(!IsStopped())
{
string s="лось";
if(LastDealResult()==1) s="язь";
if(Alerts)
{
if(LastDealResult()==1) Alert("О, несравненный Игрун, затмевающий блеском солнце, все светила и всех владык мира!"); Sleep(10000);
if(LastDealResult()==2) Alert("1. Шеф всегда прав! 2. Если шеф не прав, смотри п.1."); Sleep(10000);
}
Comment("\n Результат последней сделки: ",s);
}
}
//+------------------------------------------------------------------+
и потоком алертов с каждым тиком индикатор сообщает что стратегия была правильной
1. Шеф всегда прав!
2. Если шеф не прав, смотри п.1.
3. Шеф не спит, он отдыхает.
4. Шеф не ест, шеф востанавливает силы.
5. Шеф не пьет, шеф дегустирует.
6. Шеф не флиртует, шеф обучает кадры.
7. Кто приходит со своими убеждениями, выходит с убеждениями шефа.
8. Чьи убеждения совпадают с убеждениями шефа, тот делает карьеру.
9. Уважай своего шефа, у тебя мог быть и похуже.
10. Шеф не кричит, шеф убедительно выражает свою точку зрения.
11. Шеф не почесывает затылок, шеф обдумывает решение.
12. Шеф не забывает, шеф просто не засоряет свою память излишней информацией.
13. Шеф не ошибается, шеф принимает рискованные решения.
14. Шеф не кривится, шеф улыбаеться без энтузиазма.
15. Шеф не трус, шеф поступает предусмотрительно.
16. Шеф не неуч, шеф предпочитает творческую практику бесплодной теории.
17. Шеф не берет взятки, шеф принимает знаки внимания.
18. Шеф не любит сплетен, шеф внимательно выслушивает мнение сотрудников.
19. Шеф не мямлит, шеф делиться своими размышлениями.
20. Шеф не лжет, шеф - дипломат.
21. С шефом не происходят дорожные проишествия, у шефа есть водитель.
22. Шеф не упрям, шеф последователен.
23. Шеф не любит подхалимов, шеф премирует лояльных работников.
24. Шеф не изменяет свой жене, шеф уезжает в командировку.
25. Шеф не опаздывает, шефа задерживают важные дела.
26. Шеф не пеpеносит кpики, шеф уважает слаженный коллектив
27. Если хочешь жить и pаботать спокойно, не опеpежай шефа в pазвитии
Индикатор при запуске ищет последние действия закрытия сделок на покупку и на продажу
и потоком алертов сообщает о том что упускается прибыль
AM2