Советник "Гойдавки"

gek

Элитный участник
Зайди в советник и нажми компилировать.

Спасибо!Но чтобы компилировать,нужно его открыть.
Он у меня и там не открывается!Ничего не пойму.:question:
eevviill ! Выложи пожалуйста уже компилированную последнюю версию.
 
Последнее редактирование:

eevviill

Заблокирован
Спасибо!Но чтобы компилировать,нужно его открыть.
Он у меня и там не открывается!Ничего не пойму.:question:
eevviill ! Выложи пожалуйста уже компилированную последнюю версию.
#property copyright "eevviill"
#property link "[email protected]"


extern string н_лс = "Настройки лота и стопов";
extern bool Использ_лот_от_дэпо = true;
extern double риск = 0.17;
extern double Лот = 0.1;
extern double лот_плюс_на_посл_ордер = 0;
extern double лот_коеф_на_посл_ордер = 1.5;
extern double сумарный_профит_вал_зак = 30;
extern bool использ_безубыток_эквити = false;
extern double коеф_безубыточности = 0.3; //активация от профита
extern bool использ_профит_от_эквити=false;
extern double эквити_для_расчёта = 20000; //каждое удвоение эквити умножает на 2 сумарный профит (20000=30 40000=60)

extern string пус1 = "";
extern string н_о = "Настройки ордера";
extern int шаг_между_ордерами = 30;
extern int проскальзывание = 2;
extern int меджик = 74335;
extern string коментарий = "Гойда";
extern int MaxAttempts = 14; //максимальное количество попыток открыть или закрыть ордер

extern string пус2 = "";
extern string н_rsi = "Настройки RSI";
extern int RSI_period = 14;
extern int RSI_верхний_уровень = 55; //для сел
extern int RSI_нижний_уровень = 45; //для бай








int кільк_бай,кільк_сел,сигнал_вхід;
static int попередній_час=0;
int лот_округлений=1;
double загальний_профіт_закр;
double point;


//////////////////////////////////////////////////////////////
int init()
{
попередній_час = Time[0];

if(MarketInfo(Symbol(),MODE_LOTSTEP)==0.01) лот_округлений=2;

point=Point;
if(Digits==3 || Digits==5) {point*=10;проскальзывание*=10;}

эквити_для_расчёта=AccountEquity();

return;
}




////////////////////////////////////////////////////////////
int start()
{
//розрахунок лота від % депозиту
if(Использ_лот_от_дэпо) Лот=Лот_від_депо_ф();

//закриття всіх ордерів по загальному профіту в пунктах
загальний_профіт_закр=(Лот*10)*сумарный_профит_вал_зак;
if(использ_профит_от_эквити) загальний_профіт_закр=сумарный_профит_вал_зак*(AccountBalance()/эквити_для_расчёта);
if(Профіт_валюти_ф()>=загальний_профіт_закр) закриття_ордеру_ф();

//можливість відкриття і відкриття додаткових ордерів
перевірка_відкр_дод_ордерів();

//беззбитковість (в еквіті)
if(использ_безубыток_эквити)
{
if(Профіт_валюти_ф()>=загальний_профіт_закр*коеф_безубыточности) беззбитковість_ф();
}

//робота по відкриттю бара
if (Time[0] == попередній_час) {Sleep(50);return(0);}
попередній_час = Time[0];

//сигнал на вхід
сигнал_вхід =сигнал_вхід_ф();

//вхід
if(сигнал_вхід!=0) відкриття_ордеру_ф();







return(0);
}






//расчёт функций
/////////////////////////////////////////////////////////////////////////////////////////////
int сигнал_вхід_ф()
{
//объявление индикаторов
double RSI1 = iRSI(Symbol(),0,RSI_period,PRICE_CLOSE,1);
double RSI1_поп = iRSI(Symbol(),0,RSI_period,PRICE_CLOSE,2);


//сигнал для бай
if(RSI1_поп>RSI_нижний_уровень && RSI1<RSI_нижний_уровень) return(1);


//сигнал для сел
if(RSI1_поп<RSI_верхний_уровень && RSI1>RSI_верхний_уровень) return(-1);



return(0);
}

///////////////////////////////////////////////////////////////////////////////////////////////
void відкриття_ордеру_ф()
{
//подсчёт открытых позиций
підрахунок_відкр_ордерів();


int тікет_відкриття_ордеру=-1;
for (int j_op = 0; j_op < MaxAttempts; j_op++)
{
while(IsTradeContextBusy()) Sleep(1000);

if(сигнал_вхід>0 && кільк_бай==0 && кільк_сел==0) тікет_відкриття_ордеру=OrderSend(Symbol(),OP_BUY,NormalizeDouble(Лот,лот_округлений),Ask,проскальзывание,0,0,коментарий,меджик,0,Green);
if(сигнал_вхід<0 && кільк_сел==0 && кільк_бай==0) тікет_відкриття_ордеру=OrderSend(Symbol(),OP_SELL,NormalizeDouble(Лот,лот_округлений),Bid,проскальзывание,0,0,коментарий,меджик,0,OrangeRed);
if(тікет_відкриття_ордеру>-1)break;
}

}

///////////////////////////////////////////////////////////////////////////////////
double Профіт_валюти_ф()
{
double профіт;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderMagicNumber()==меджик)
{
профіт+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}

return(профіт);
}

////////////////////////////////////////////////////////////////////////////////////
void підрахунок_відкр_ордерів()
{
кільк_бай=0;
кільк_сел=0;

for (int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS);
{
if(OrderMagicNumber()==меджик)
{
if(OrderType()==OP_BUY) кільк_бай++;
if(OrderType()==OP_SELL) кільк_сел++;
}
}
}

}

////////////////////////////////////////////////////////////////////////////////
void закриття_ордеру_ф()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS);
{
if(OrderMagicNumber()==меджик)
{
if(OrderSymbol()==Symbol())
{
bool закрився_ордер=false;
for (int j_ex = 0;j_ex < MaxAttempts; j_ex++)
{
while(IsTradeContextBusy()) Sleep(1000);

if(OrderType()==OP_BUY ) закрився_ордер=OrderClose(OrderTicket(),OrderLots(),Bid,проскальзывание,Yellow);
if(OrderType()==OP_SELL) закрився_ордер=OrderClose(OrderTicket(),OrderLots(),Ask,проскальзывание,Yellow);
if(OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_BUYLIMIT) закрився_ордер=OrderDelete(OrderTicket(),CLR_NONE);
if(закрився_ордер==true)break;
}
}
}
}
}

}

////////////////////////////////////////////////////////////////////////
void перевірка_відкр_дод_ордерів()
{
підрахунок_відкр_ордерів();
if(кільк_бай!=0 || кільк_сел!=0)
{

/////////////////////////////////данні останнього ордеру
int тип_ост_ордера=-1;
double лот_ост_ордера=0;
double ціна_ост_ордера=0;
int тікет_відкриття_ордеру;


for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==меджик)
{
if(OrderSymbol()==Symbol())
{
тип_ост_ордера=OrderType();
лот_ост_ордера=NormalizeDouble(OrderLots(),лот_округлений);
ціна_ост_ордера=OrderOpenPrice();
break;
}
}
}
}

/////////////////////////////////данні передостаннього ордеру
double ціна_п_ост_ордера=0;
if(кільк_бай==0 || кільк_сел==0) ціна_п_ост_ордера=ціна_ост_ордера;

int вибір_ордера=0;

for(i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==меджик)
{
if(OrderSymbol()==Symbol())
{
вибір_ордера++;
if(вибір_ордера==2)
{
ціна_п_ост_ордера=OrderOpenPrice();
break;
}
}
}
}
}


//////////якщо останній ордер бай
if(тип_ост_ордера==OP_BUY)
{
if(Ask<=ціна_п_ост_ордера-шаг_между_ордерами*point)
{
тікет_відкриття_ордеру=-1;
for (int j = 0; j < MaxAttempts; j++)
{
while(IsTradeContextBusy()) Sleep(1000);

тікет_відкриття_ордеру=OrderSend(Symbol(),OP_SELL,NormalizeDouble(лот_ост_ордера*лот_коеф_на_посл_ордер+лот_плюс_на_посл_ордер,лот_округлений),Bid,проскальзывание,0,0,коментарий,меджик,0,OrangeRed);
if(тікет_відкриття_ордеру>-1)break;
}
}
}

//////////якщо останній ордер сел
if(тип_ост_ордера==OP_SELL)
{
if(Bid>=ціна_п_ост_ордера+шаг_между_ордерами*point)
{
тікет_відкриття_ордеру=-1;
for (j = 0; j < MaxAttempts; j++)
{
while(IsTradeContextBusy()) Sleep(1000);

тікет_відкриття_ордеру=OrderSend(Symbol(),OP_BUY,NormalizeDouble(лот_ост_ордера*лот_коеф_на_посл_ордер+лот_плюс_на_посл_ордер,лот_округлений),Ask,проскальзывание,0,0,коментарий,меджик,0,Blue);
if(тікет_відкриття_ордеру>-1)break;
}
}
}



}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
double Лот_від_депо_ф()
{
double Вільна_маржа =AccountFreeMargin();
double Маржа_на_1_лот =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Мін_лот =MarketInfo(Symbol(),MODE_MINLOT);
double Макс_лот =MarketInfo(Symbol(),MODE_MAXLOT);
double Крок_лоту =MarketInfo(Symbol(),MODE_LOTSTEP);
double Лот_п =MathFloor(Вільна_маржа*риск/100/Маржа_на_1_лот/Крок_лоту)*Крок_лоту;
if(Лот_п<Мін_лот) Лот_п=Мін_лот;
if(Лот_п>Макс_лот) Лот_п=Макс_лот;
if(Лот_п*Маржа_на_1_лот>Вільна_маржа) return(0.0);

return(Лот_п);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
double ціна_беззбитковості_ф()
{

int Spr= MarketInfo(Symbol(),MODE_SPREAD);
//------------ Безубыток ---------------------------------------------------
double B2_B=0,B2_S=0,B2_LB=0,B2_LS=0,BSw=0,BCo=0,SSw=0,SCo=0,Prof=0;
for(int b2=0;b2<OrdersTotal();b2++) //
{
if(OrderSelect(b2,SELECT_BY_POS,MODE_TRADES)==false) continue;
if (OrderSymbol()==Symbol() && OrderMagicNumber()==меджик)
{
if (OrderType()==OP_BUY)
{
B2_B=((B2_B*B2_LB)+(OrderOpenPrice()*OrderLots()))/(B2_LB+OrderLots());
B2_LB=NormalizeDouble(B2_LB+OrderLots(),2);
BSw=BSw+OrderSwap();
BCo=BCo+OrderCommission();
Prof=Prof+OrderProfit()+OrderSwap()+OrderCommission();
}
if (OrderType()==OP_SELL)
{
B2_S=((B2_S*B2_LS)+(OrderOpenPrice()*OrderLots()))/(B2_LS+OrderLots());
B2_LS=NormalizeDouble(B2_LS+OrderLots(),2);
SSw=SSw+OrderSwap();
SCo=SCo+OrderCommission();
Prof=Prof+OrderProfit()+OrderSwap()+OrderCommission();
}
}}

/////////////////////////////////////////////////////////////////////////////////////
double M2B=0,M2S=0 ,M5;
if (B2_LB>B2_LS) // Идём вверх
{
for(int J2=0;J2<10000;J2++)
{
M2B=J2*B2_LB*10;
M2S=((B2_B-B2_S+Spr*Point)/Point+J2)*(B2_LS*(-10));
if (M2B+M2S+BSw+SSw>=0)
{
M5=NormalizeDouble(B2_B+J2*Point,Digits);
break;
}}}
////////////////////////
if (B2_LS>B2_LB) // Идём вниз
{
for(int J3=0;J3<10000;J3++)
{
M2S=J3*B2_LS*10;
M2B=((B2_B-B2_S+Spr*Point)/Point+J3)*(B2_LB*(-10));
if (M2S+M2B+BSw+SSw>=0)
{
M5=NormalizeDouble(B2_S-(J3+Spr)*Point,Digits);
break;
}}}


// M5=рівень беззбитковості
return(M5);
}

//////////////////////////////////////////////////////////////////////////////////////
void беззбитковість_ф()
{
double ціна_беззбитковості=ціна_беззбитковості_ф();


for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderMagicNumber()==меджик)
{
while(IsTradeContextBusy()) Sleep(1000);

//////////////
if(OrderType()==OP_BUY)
{
if(NormalizeDouble(ціна_беззбитковості,Digits)>Bid && (NormalizeDouble(OrderTakeProfit(),Digits)!=NormalizeDouble(ціна_беззбитковості,Digits) && OrderStopLoss()!=NormalizeDouble(ціна_беззбитковості,Digits)))
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(ціна_беззбитковості,Digits),CLR_NONE);
///
if(NormalizeDouble(ціна_беззбитковості,Digits)<Bid && (NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(ціна_беззбитковості,Digits) && OrderTakeProfit()!=NormalizeDouble(ціна_беззбитковості,Digits)))
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(ціна_беззбитковості,Digits),OrderTakeProfit(),CLR_NONE);
}

/////////////
if(OrderType()==OP_SELL)
{
if(NormalizeDouble(ціна_беззбитковості,Digits)>Ask && (NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits) && OrderTakeProfit()!=NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits)))
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits),OrderTakeProfit(),CLR_NONE);
///
if(NormalizeDouble(ціна_беззбитковості,Digits)<Ask && (NormalizeDouble(OrderTakeProfit(),Digits)!=NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits) && OrderStopLoss()!=NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits)))
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits),CLR_NONE);
}

}
}
}

}
 

maradona1981

Новичок форума
вот еще могу предложить такой банальный вариант, чтоб профит фактор поднять
если цена выше МА 96 на 1Н, то входы по RSI только в бай, если ниже только в селл
 

gek

Элитный участник
#property copyright "eevviill"
#property link "[email protected]"


extern string н_лс = "Настройки лота и стопов";
extern bool Использ_лот_от_дэпо = true;
extern double риск = 0.17;
extern double Лот = 0.1;
extern double лот_плюс_на_посл_ордер = 0;
extern double лот_коеф_на_посл_ордер = 1.5;
extern double сумарный_профит_вал_зак = 30;
extern bool использ_безубыток_эквити = false;
extern double коеф_безубыточности = 0.3; //активация от профита
extern bool использ_профит_от_эквити=false;
extern double эквити_для_расчёта = 20000; //каждое удвоение эквити умножает на 2 сумарный профит (20000=30 40000=60)

extern string пус1 = "";
extern string н_о = "Настройки ордера";
extern int шаг_между_ордерами = 30;
extern int проскальзывание = 2;
extern int меджик = 74335;
extern string коментарий = "Гойда";
extern int MaxAttempts = 14; //максимальное количество попыток открыть или закрыть ордер

extern string пус2 = "";
extern string н_rsi = "Настройки RSI";
extern int RSI_period = 14;
extern int RSI_верхний_уровень = 55; //для сел
extern int RSI_нижний_уровень = 45; //для бай








int кільк_бай,кільк_сел,сигнал_вхід;
static int попередній_час=0;
int лот_округлений=1;
double загальний_профіт_закр;
double point;


//////////////////////////////////////////////////////////////
int init()
{
попередній_час = Time[0];

if(MarketInfo(Symbol(),MODE_LOTSTEP)==0.01) лот_округлений=2;

point=Point;
if(Digits==3 || Digits==5) {point*=10;проскальзывание*=10;}

эквити_для_расчёта=AccountEquity();

return;
}




////////////////////////////////////////////////////////////
int start()
{
//розрахунок лота від % депозиту
if(Использ_лот_от_дэпо) Лот=Лот_від_депо_ф();

//закриття всіх ордерів по загальному профіту в пунктах
загальний_профіт_закр=(Лот*10)*сумарный_профит_вал_зак;
if(использ_профит_от_эквити) загальний_профіт_закр=сумарный_профит_вал_зак*(AccountBalance()/эквити_для_расчёта);
if(Профіт_валюти_ф()>=загальний_профіт_закр) закриття_ордеру_ф();

//можливість відкриття і відкриття додаткових ордерів
перевірка_відкр_дод_ордерів();

//беззбитковість (в еквіті)
if(использ_безубыток_эквити)
{
if(Профіт_валюти_ф()>=загальний_профіт_закр*коеф_безубыточности) беззбитковість_ф();
}

//робота по відкриттю бара
if (Time[0] == попередній_час) {Sleep(50);return(0);}
попередній_час = Time[0];

//сигнал на вхід
сигнал_вхід =сигнал_вхід_ф();

//вхід
if(сигнал_вхід!=0) відкриття_ордеру_ф();







return(0);
}






//расчёт функций
/////////////////////////////////////////////////////////////////////////////////////////////
int сигнал_вхід_ф()
{
//объявление индикаторов
double RSI1 = iRSI(Symbol(),0,RSI_period,PRICE_CLOSE,1);
double RSI1_поп = iRSI(Symbol(),0,RSI_period,PRICE_CLOSE,2);


//сигнал для бай
if(RSI1_поп>RSI_нижний_уровень && RSI1<RSI_нижний_уровень) return(1);


//сигнал для сел
if(RSI1_поп<RSI_верхний_уровень && RSI1>RSI_верхний_уровень) return(-1);



return(0);
}

///////////////////////////////////////////////////////////////////////////////////////////////
void відкриття_ордеру_ф()
{
//подсчёт открытых позиций
підрахунок_відкр_ордерів();


int тікет_відкриття_ордеру=-1;
for (int j_op = 0; j_op < MaxAttempts; j_op++)
{
while(IsTradeContextBusy()) Sleep(1000);

if(сигнал_вхід>0 && кільк_бай==0 && кільк_сел==0) тікет_відкриття_ордеру=OrderSend(Symbol(),OP_BUY,NormalizeDouble(Лот,лот_округлений),Ask,проскальзывание,0,0,коментарий,меджик,0,Green);
if(сигнал_вхід<0 && кільк_сел==0 && кільк_бай==0) тікет_відкриття_ордеру=OrderSend(Symbol(),OP_SELL,NormalizeDouble(Лот,лот_округлений),Bid,проскальзывание,0,0,коментарий,меджик,0,OrangeRed);
if(тікет_відкриття_ордеру>-1)break;
}

}

///////////////////////////////////////////////////////////////////////////////////
double Профіт_валюти_ф()
{
double профіт;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderMagicNumber()==меджик)
{
профіт+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}

return(профіт);
}

////////////////////////////////////////////////////////////////////////////////////
void підрахунок_відкр_ордерів()
{
кільк_бай=0;
кільк_сел=0;

for (int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS);
{
if(OrderMagicNumber()==меджик)
{
if(OrderType()==OP_BUY) кільк_бай++;
if(OrderType()==OP_SELL) кільк_сел++;
}
}
}

}

////////////////////////////////////////////////////////////////////////////////
void закриття_ордеру_ф()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS);
{
if(OrderMagicNumber()==меджик)
{
if(OrderSymbol()==Symbol())
{
bool закрився_ордер=false;
for (int j_ex = 0;j_ex < MaxAttempts; j_ex++)
{
while(IsTradeContextBusy()) Sleep(1000);

if(OrderType()==OP_BUY ) закрився_ордер=OrderClose(OrderTicket(),OrderLots(),Bid,проскальзывание,Yellow);
if(OrderType()==OP_SELL) закрився_ордер=OrderClose(OrderTicket(),OrderLots(),Ask,проскальзывание,Yellow);
if(OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_BUYLIMIT) закрився_ордер=OrderDelete(OrderTicket(),CLR_NONE);
if(закрився_ордер==true)break;
}
}
}
}
}

}

////////////////////////////////////////////////////////////////////////
void перевірка_відкр_дод_ордерів()
{
підрахунок_відкр_ордерів();
if(кільк_бай!=0 || кільк_сел!=0)
{

/////////////////////////////////данні останнього ордеру
int тип_ост_ордера=-1;
double лот_ост_ордера=0;
double ціна_ост_ордера=0;
int тікет_відкриття_ордеру;


for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==меджик)
{
if(OrderSymbol()==Symbol())
{
тип_ост_ордера=OrderType();
лот_ост_ордера=NormalizeDouble(OrderLots(),лот_округлений);
ціна_ост_ордера=OrderOpenPrice();
break;
}
}
}
}

/////////////////////////////////данні передостаннього ордеру
double ціна_п_ост_ордера=0;
if(кільк_бай==0 || кільк_сел==0) ціна_п_ост_ордера=ціна_ост_ордера;

int вибір_ордера=0;

for(i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==меджик)
{
if(OrderSymbol()==Symbol())
{
вибір_ордера++;
if(вибір_ордера==2)
{
ціна_п_ост_ордера=OrderOpenPrice();
break;
}
}
}
}
}


//////////якщо останній ордер бай
if(тип_ост_ордера==OP_BUY)
{
if(Ask<=ціна_п_ост_ордера-шаг_между_ордерами*point)
{
тікет_відкриття_ордеру=-1;
for (int j = 0; j < MaxAttempts; j++)
{
while(IsTradeContextBusy()) Sleep(1000);

тікет_відкриття_ордеру=OrderSend(Symbol(),OP_SELL,NormalizeDouble(лот_ост_ордера*лот_коеф_на_посл_ордер+лот_плюс_на_посл_ордер,лот_округлений),Bid,проскальзывание,0,0,коментарий,меджик,0,OrangeRed);
if(тікет_відкриття_ордеру>-1)break;
}
}
}

//////////якщо останній ордер сел
if(тип_ост_ордера==OP_SELL)
{
if(Bid>=ціна_п_ост_ордера+шаг_между_ордерами*point)
{
тікет_відкриття_ордеру=-1;
for (j = 0; j < MaxAttempts; j++)
{
while(IsTradeContextBusy()) Sleep(1000);

тікет_відкриття_ордеру=OrderSend(Symbol(),OP_BUY,NormalizeDouble(лот_ост_ордера*лот_коеф_на_посл_ордер+лот_плюс_на_посл_ордер,лот_округлений),Ask,проскальзывание,0,0,коментарий,меджик,0,Blue);
if(тікет_відкриття_ордеру>-1)break;
}
}
}



}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
double Лот_від_депо_ф()
{
double Вільна_маржа =AccountFreeMargin();
double Маржа_на_1_лот =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Мін_лот =MarketInfo(Symbol(),MODE_MINLOT);
double Макс_лот =MarketInfo(Symbol(),MODE_MAXLOT);
double Крок_лоту =MarketInfo(Symbol(),MODE_LOTSTEP);
double Лот_п =MathFloor(Вільна_маржа*риск/100/Маржа_на_1_лот/Крок_лоту)*Крок_лоту;
if(Лот_п<Мін_лот) Лот_п=Мін_лот;
if(Лот_п>Макс_лот) Лот_п=Макс_лот;
if(Лот_п*Маржа_на_1_лот>Вільна_маржа) return(0.0);

return(Лот_п);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
double ціна_беззбитковості_ф()
{

int Spr= MarketInfo(Symbol(),MODE_SPREAD);
//------------ Безубыток ---------------------------------------------------
double B2_B=0,B2_S=0,B2_LB=0,B2_LS=0,BSw=0,BCo=0,SSw=0,SCo=0,Prof=0;
for(int b2=0;b2<OrdersTotal();b2++) //
{
if(OrderSelect(b2,SELECT_BY_POS,MODE_TRADES)==false) continue;
if (OrderSymbol()==Symbol() && OrderMagicNumber()==меджик)
{
if (OrderType()==OP_BUY)
{
B2_B=((B2_B*B2_LB)+(OrderOpenPrice()*OrderLots()))/(B2_LB+OrderLots());
B2_LB=NormalizeDouble(B2_LB+OrderLots(),2);
BSw=BSw+OrderSwap();
BCo=BCo+OrderCommission();
Prof=Prof+OrderProfit()+OrderSwap()+OrderCommission();
}
if (OrderType()==OP_SELL)
{
B2_S=((B2_S*B2_LS)+(OrderOpenPrice()*OrderLots()))/(B2_LS+OrderLots());
B2_LS=NormalizeDouble(B2_LS+OrderLots(),2);
SSw=SSw+OrderSwap();
SCo=SCo+OrderCommission();
Prof=Prof+OrderProfit()+OrderSwap()+OrderCommission();
}
}}

/////////////////////////////////////////////////////////////////////////////////////
double M2B=0,M2S=0 ,M5;
if (B2_LB>B2_LS) // Идём вверх
{
for(int J2=0;J2<10000;J2++)
{
M2B=J2*B2_LB*10;
M2S=((B2_B-B2_S+Spr*Point)/Point+J2)*(B2_LS*(-10));
if (M2B+M2S+BSw+SSw>=0)
{
M5=NormalizeDouble(B2_B+J2*Point,Digits);
break;
}}}
////////////////////////
if (B2_LS>B2_LB) // Идём вниз
{
for(int J3=0;J3<10000;J3++)
{
M2S=J3*B2_LS*10;
M2B=((B2_B-B2_S+Spr*Point)/Point+J3)*(B2_LB*(-10));
if (M2S+M2B+BSw+SSw>=0)
{
M5=NormalizeDouble(B2_S-(J3+Spr)*Point,Digits);
break;
}}}


// M5=рівень беззбитковості
return(M5);
}

//////////////////////////////////////////////////////////////////////////////////////
void беззбитковість_ф()
{
double ціна_беззбитковості=ціна_беззбитковості_ф();


for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderMagicNumber()==меджик)
{
while(IsTradeContextBusy()) Sleep(1000);

//////////////
if(OrderType()==OP_BUY)
{
if(NormalizeDouble(ціна_беззбитковості,Digits)>Bid && (NormalizeDouble(OrderTakeProfit(),Digits)!=NormalizeDouble(ціна_беззбитковості,Digits) && OrderStopLoss()!=NormalizeDouble(ціна_беззбитковості,Digits)))
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(ціна_беззбитковості,Digits),CLR_NONE);
///
if(NormalizeDouble(ціна_беззбитковості,Digits)<Bid && (NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(ціна_беззбитковості,Digits) && OrderTakeProfit()!=NormalizeDouble(ціна_беззбитковості,Digits)))
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(ціна_беззбитковості,Digits),OrderTakeProfit(),CLR_NONE);
}

/////////////
if(OrderType()==OP_SELL)
{
if(NormalizeDouble(ціна_беззбитковості,Digits)>Ask && (NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits) && OrderTakeProfit()!=NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits)))
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits),OrderTakeProfit(),CLR_NONE);
///
if(NormalizeDouble(ціна_беззбитковості,Digits)<Ask && (NormalizeDouble(OrderTakeProfit(),Digits)!=NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits) && OrderStopLoss()!=NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits)))
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(ціна_беззбитковості+MarketInfo(Symbol(),MODE_SPREAD)*point,Digits),CLR_NONE);
}

}
}
}

}

Копирую в MQL, не идёт,появляются одни вопросы.Зависит от языка?Не должно.
Ничего не пойму.Скачал последнюю версию с All Close.Этот открывает,а Visual нет.Что делать?]:->

Ни одна версия с самого начала не открывается!
Мужики в чём дело?Кто знает?
 
Последнее редактирование:

gek

Элитный участник
И как теперь?Можно исправить?Так хотелось попробовать.
 

НЛО

Почетный гражданин
eevviill, хочется проверить в тестере такую ерунду, если сможешь напиши такой сов.
1.открытие на новом баре, если предыдущий бар закрылся хай- открывает на новом(следующем) баре покупку, если предыдущий бар закрылся лоу- открывает на новом(следующем) баре продажу.
2.Каждому ордеру выставляет свой ТП(настройка)
3.Безубыток(настройка)ставит бузубыток каждому ордеру отдельно, т.е. сов следит за каждым ордером отдельно.
4.Одинаковые ордера должны быть не ближе кол-ва пунктов указаных в настройке, т.е. если в настройке стоит 200 пунктов(5 знаков), то между ордерми бай должно быть минимум 200пп, если этого расстояния нет то открытие на новом баре пропускается, и также для селл ордеров.
5.Лот(настройка)

П.С. Вроде понятно оПисал.

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

НЛО

Почетный гражданин
Всмысле цена закрытия совпадает с хай свечи?

если цена закрытия свечи хай( свечи тела), синяя свеча- покупка на след.баре., красная ноборот

Или так: незнаю как объяснить, короче после синей свечи покупает, после красной продает, см. рис.
 

Вложения

  • 2012-12-29_003633.png
    2012-12-29_003633.png
    15,1 КБ · Просмотры: 139

eevviill

Заблокирован
если цена закрытия свечи хай( свечи тела), синяя свеча- покупка на след.баре., красная ноборот

Или так: незнаю как объяснить, короче после синей свечи покупает, после красной продает, см. рис.
Аа. Ничего не будет. Сразу будет прибыль с первых ордеров, а потом те ордера бай и сел что станут далеко друг от друга будут в вечном локе.
 

НЛО

Почетный гражданин
Аа. Ничего не будет. Сразу будет прибыль с первых ордеров, а потом те ордера бай и сел что станут далеко друг от друга будут в вечном локе.
Дык и пусь болтаются, лот то минимальный, а прибыль будет капать постоянная, и когда нибудь первоначальный депо поползет вверх.
Нужно брать пару с относительно неболшим ходом на истории и все будет ОК, а теперь представь, что через каждые 200пп(5знаков) будет щелкать ТП, допустим 1000пп.
 

grisly

Местный житель
У меня все работает. Я в начале неделе обновлял мт4. Даже щас сделка открывая недавно висит
 
Верх