input string Symb="GBPUSD";

input string Symb="GBPUSD";
//+------------------------------------------------------------------+
//| Genri.mq4 |
//| Copyright 2016, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
#property indicator_chart_window
input double L1=0;
input double L2=0;
input double L3=0;
input double L4=0;
input double L5=0;
input double L6=0;
input double L7=0;
input double L8=0;
input double L9=0;
input int Width=1;
input color Color=Red;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
ObjectsDeleteAll(0,0,OBJ_HLINE);
}
//+------------------------------------------------------------------+
//| Горизонтальная линия |
//+------------------------------------------------------------------+
void PutHLine(string name,double p,int width,color clr)
{
ObjectDelete(0,name);
ObjectCreate(0,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
if(L1>0) PutHLine("Line"+(string)L1,L1,Width,Color);
if(L2>0) PutHLine("Line"+(string)L2,L2,Width,Color);
if(L3>0) PutHLine("Line"+(string)L3,L3,Width,Color);
if(L4>0) PutHLine("Line"+(string)L4,L4,Width,Color);
if(L5>0) PutHLine("Line"+(string)L5,L5,Width,Color);
if(L6>0) PutHLine("Line"+(string)L6,L6,Width,Color);
if(L7>0) PutHLine("Line"+(string)L7,L7,Width,Color);
if(L8>0) PutHLine("Line"+(string)L8,L8,Width,Color);
if(L9>0) PutHLine("Line"+(string)L9,L9,Width,Color);
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
Прошу Вас провести ликбез по MQL5, каким образом можно добавить в этот советник трейлинг и без убыток
Напишите плиз хотя бы кусочек кода
bool b=true,s=true;
...
if(s && ...) {PutOrder(1,Bid);s=false;b=true;}
if(b && ...) {PutOrder(0,Ask);b=false;s=true;}
double Lot()
{
double lot=Lots;
if(CountTrades()>0) lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades()),2);
if(lot>MaxLot)lot=Lots;
return(lot);
}
//+------------------------------------------------------------------+
//| Murena.mq4 |
//| Copyright 2016, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
input bool Order1=true;
input bool Order2=true;
input bool Order3=true;
input bool Order4=true;
input bool Order5=true;
input bool Order6=true;
input bool Order7=true;
input bool Order8=true;
input bool Order9=true;
input bool Order10=true;
input bool Order11=true;
input bool Order12=true;
input bool Order13=true;
extern double Lots = 0.1; // лот
extern int StopLoss = 0; // лось
extern int TakeProfit = 0; // язь
extern int Slip = 30; // реквот
extern int Magic = 123; // магик
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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,Lots,NormalizeDouble(price,Digits),Slip,0,0,"",Magic,0,clr);
return;
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//mml12 +2/8p
//mml11 +1/8p
//mml10 8/8
//mml9 7/8
//mml8 6/8
//mml7 5/8
//mml6 4/8
//mml5 3/8
//mml4 2/8
//mml3 1/8
//mml2 0/8
//mml1 -1/8p
//mml0 -2/8p
double p28p=ObjectGetDouble(0,"mml12",OBJPROP_PRICE);
double p18p=ObjectGetDouble(0,"mml11",OBJPROP_PRICE);
double p88=ObjectGetDouble(0,"mml10",OBJPROP_PRICE);
double p78=ObjectGetDouble(0,"mml9",OBJPROP_PRICE);
double p68=ObjectGetDouble(0,"mml8",OBJPROP_PRICE);
double p58=ObjectGetDouble(0,"mml7",OBJPROP_PRICE);
double p48=ObjectGetDouble(0,"mml6",OBJPROP_PRICE);
double p38=ObjectGetDouble(0,"mml5",OBJPROP_PRICE);
double p28=ObjectGetDouble(0,"mml4",OBJPROP_PRICE);
double p18=ObjectGetDouble(0,"mml3",OBJPROP_PRICE);
double p08=ObjectGetDouble(0,"mml2",OBJPROP_PRICE);
double p18m=ObjectGetDouble(0,"mml1",OBJPROP_PRICE);
double p28m=ObjectGetDouble(0,"mml0",OBJPROP_PRICE);
if(OrdersTotal()<1)
{
if(Order13 && Bid<p28p) PutOrder(3,NormalizeDouble(p28p,Digits));
if(Order12 && Bid<p18p) PutOrder(3,NormalizeDouble(p18p,Digits));
if(Order11 && Bid<p88) PutOrder(3,NormalizeDouble(p88,Digits));
if(Order10 && Bid<p78) PutOrder(3,NormalizeDouble(p78,Digits));
if(Order9 && Bid<p68) PutOrder(3,NormalizeDouble(p68,Digits));
if(Order8 && Bid<p58) PutOrder(3,NormalizeDouble(p58,Digits));
if(Order7 && Bid<p48) PutOrder(3,NormalizeDouble(p48,Digits));
if(Order6 && Bid>p38) PutOrder(2,NormalizeDouble(p38,Digits));
if(Order5 && Bid>p28) PutOrder(2,NormalizeDouble(p28,Digits));
if(Order4 && Bid>p18) PutOrder(2,NormalizeDouble(p18,Digits));
if(Order3 && Bid>p08) PutOrder(2,NormalizeDouble(p08,Digits));
if(Order2 && Bid>p18m) PutOrder(2,NormalizeDouble(p18m,Digits));
if(Order1 && Bid>p28m) PutOrder(2,NormalizeDouble(p28m,Digits));
}
Comment("\n +2/8P: ",p28);
}
//+------------------------------------------------------------------+
Как избавиться от OrderSend error 131?
Объясните велика ли разница между строчками
ордера так и не открылись, почему?
AM2