//+------------------------------------------------------------------+
//| Stat.mq4 |
//| Copyright 2020, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
string s="";
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
Comment("");
for(int i=0; i<2; i++)
{
double lo=iLow(NULL,PERIOD_D1,i);
double hi=iHigh(NULL,PERIOD_D1,i);
s+="\n "+"\n "+"High "+(string)i+" = "+(string)hi+" Low "+(string)i+" = "+(string)lo+"\n ";
for(int j=0; j<24; j++)
{
s+="\n "+(string)j;
if(High[j]==hi)
{
s+=" "+(string)1;
}
else
s+=" "+(string)0;
if(Low[j]==lo)
{
s+=" "+(string)1;
}
else
s+=" "+(string)0;
}
}
Comment(s);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Counter.mq4 |
//| Copyright 2020, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
string symbols[] = {"EURUSD","EURUSD","EURUSD","GBPUSD","GBPUSD","USDJPY","USDCHF","USDCAD"}; // база
string symb[]; // массив
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Проверка наличия символа в массиве |
//+------------------------------------------------------------------+
bool Proverka(string s)
{
for(int i=0; i<ArraySize(symb); i++)
{
if(s==symb[i])
return(true);
}
return(false);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
/*
1. берем 1-й символ c базы
2. заносим его в массив
3. берем 2-й символ
4. проверяем есть ли он в массиве
5. если нет заносим
*/
ArrayResize(symb,1);
symb[0]=symbols[0];
for(int i=0; i<ArraySize(symbols); i++)
{
if(!Proverka(symbols[i]))
{
ArrayResize(symb,ArraySize(symb)+1);
symb[ArraySize(symb)-1]=symbols[i];
}
}
Comment("\n Count: ",ArraySize(symb));
}
//+------------------------------------------------------------------+
На скриншоте немного не такконечно не так, там все в динамике будет. можно даже в тестере прогнать посмотреть, нанести индикаторы
Вот например, при суперлось= 100 и суперязь= -50, слева 2 сделки правильно увеличил стоп и уменьшил тейк, а справа 2 сделки не обратил внимания, что это нужно сделать. Это происходит и на баевых, и на селовых сделках.
//+------------------------------------------------------------------+
//| Candles.mq4 |
//| Copyright 2020, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
//--- Inputs
extern double Lots = 0.1; // лот
extern double KLot = 1; // умножение лота
extern double MaxLot = 5; // максимальный лот
extern int StopLoss = 100; // супер лось
extern int TakeProfit = -50; // супер язь
extern int Delta = 100; // тело свечи 1-й свечи
extern int Sigma = 200; // тела 2-х свечей
extern int Slip = 30; // реквот
extern int Magic = 123; // магик
datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
{
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()==type || type==-1)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Lot()
{
double lot=Lots;
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);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
int r=0;
if(t!=Time[0])
{
double sl=0;
double tp=MathAbs(Close[1]-Open[2])+(MathAbs(Close[1]-Open[2])*TakeProfit*0.01);
if(Low[2]<Low[3] && Close[1]-Close[2]>Delta*_Point && Close[2]-Close[3]>Delta*_Point && Close[1]-Close[3]>Sigma*_Point)
{
sl=(Close[1]-Low[2])+(Close[1]-Low[2])*StopLoss*0.01;
r=OrderSend(NULL,0,Lot(),NormalizeDouble(Ask,_Digits),Slip,NormalizeDouble(Ask-sl,_Digits),NormalizeDouble(Bid+tp,_Digits),"",Magic,0,Blue);
}
if(High[2]>High[3] && Close[2]-Close[1]>Delta*_Point && Close[3]-Close[2]>Delta*_Point && Close[3]-Close[1]>Sigma*_Point)
{
sl=(High[2]-Close[1])+(High[2]-Close[1])*StopLoss*0.01;
r=OrderSend(NULL,1,Lot(),NormalizeDouble(Bid,_Digits),Slip,NormalizeDouble(Bid+sl,_Digits),NormalizeDouble(Ask-tp,_Digits),"",Magic,0,Red);
}
t=Time[0];
}
}
//+------------------------------------------------------------------+
Посмотрел в код своим дилетенским взглядом, понял вроде, что свечи, которые я на скринах называл 0,1,2, вы называете 1,2,3. Может тут путаница произошла?
Здравствуйте Андрей.Советник установил, на графике улыбается но не открывает ни одного ордера.В тестере тоже молчок.В журнале только запись что советник успешно установлен (successfully loaded) и больше ничего.Посмотрите пожалуйста.
AM2