Ну и до кучи моя доработка кимовского советника. Присутствует отключаемый тралл стоповых ордеров по теням свечей. Выставление стоплосса и такепрофита на стоповые отложки и рыночные ордера и перевод в безубыток.Трал стоповых отложек идет по тому таймфрейму на который установлен советник. Устанавливать можно на одно окно валютной пары.Доброго вечера, многоуважаемые! Прежде хочу выразить благодарность вам, тем, кто помогает несмышленышам(к коим отношусь и я) в программировании сов, индюков и других птиц. У меня вот какая просьба. Есть советник Безубыток_ALL. Он выставляет безубыток(в 0 или на нужное количество пунктов) на всех задействованных парах, хоть и кидается только на одну. Так вот, есть ли у кого-нибудь возможность добавить в него изменяемый тейк-профит? Или может есть у кого-нибудь отдельный такой неторгующий советник, выставляющий заданный тейк?
-------------------------------------------------------------Всем привет.
Кому несложно, просьба сделать закрытие позиций не %, а в валюте депозита.
Здравствуйте!!!
Кому не сложно ,декомпельните пожалуйста этот индюк.
Буду очень благодарен.
extern int LotFactor=10; //Эта переменная только для удобства оптимизации советника.
extern int StopLoss=500;
extern int TakeProfit=750;
extern double Lot=0.01; //Изначальный лот.
double LotF=513; //Это множитель для насыщения.
bool buy=true; //Будет ли сделка BUY или SELL
int init()
{
return(0);
}
int start()
{
switch(LotFactor) //Тут в зависимости от переменной LotFactor будет выбираться множитель для лота. По умолчанию LotFactor = 10, т.е. множитель (LotF) равен 513.
{
case 1 : LotF=1.5; break;
case 2 : LotF=3; break;
case 3 : LotF=5; break;
case 4 : LotF=9; break;
case 5 : LotF=17; break;
case 6 : LotF=33; break;
case 7 : LotF=65; break;
case 8 : LotF=129; break;
case 9 : LotF=257; break;
case 10 : LotF=513; break;
case 11 : LotF=1025; break;
case 12 : LotF=2049; break;
default : LotF=513; break;
}
int total, oldtotal, cnt, myTicket, myMagic=111;
bool myTrades = false;
total = OrdersTotal();
for(cnt = 0; cnt < total; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber() == myMagic)
{
myTicket = OrderTicket();
myTrades = true;
}
}
double Lots = Lot; // Lots - это лот, на который советник будет торговать. В начале он задается равным тому лоту, что мы ставим в настройках советника.
oldtotal = OrdersHistoryTotal();
if(oldtotal > 0)
{
OrderSelect(oldtotal - 1, SELECT_BY_POS, MODE_HISTORY); //Выбираем предыдущий ордер из истории.
if(OrderProfit() > 0) //Если этот предыдущий ордер из истории был выигрышным - меняем направление сделки.
{
if(OrderType() == OP_BUY)
{
buy=false;
}
if(OrderType() == OP_SELL)
{
buy=true;
}
}
if(OrderProfit() < 0) //Если этот предыдущий ордер из истории был проигрышным - сохраняем направление сделки.
{
Lots = OrderLots() * 2; // И удваиваем лот.
if(OrderType() == OP_BUY)
{
buy=true;
}
if(OrderType() == OP_SELL)
{
buy=false;
}
}
else
{
Lots = Lot; // Когда попалась выигрышная сделка, лот сбрасывается.
}
}
if(Lots > Lot*LotF) // Если лот превышает установленный лот, домноженный на LotF, то больше лот не удваивается, а сохраняется таким, какой он есть, до первой выигрышной сделки.
//ПРИМЕР: Lot = 0.01, LotF = 513; Если текущий лот из-за серии убытков стал больше чем 0.01*513 = 5.13, то при дальнейших убытках лот будет сохранять значение 5.13, и когда появится выигрышная сделка, он сбросится до 0.01.
{
Lots = OrderLots();
}
int myColour, cmd;
double myPrice, myPriceClose, myStop, myProfit;
if(myTrades == false)
{
if(buy == true) // BUY
{
cmd = 0;
myPrice = Ask;
myPriceClose = Bid;
myColour = Green;
myStop = Ask - Point*StopLoss;
myProfit = Ask + Point*TakeProfit;
}
if(buy == false) // SELL
{
cmd = 1;
myPrice = Bid;
myPriceClose = Ask;
myColour = Red;
myStop = Bid + Point*StopLoss;
myProfit = Bid - Point*TakeProfit;
}
myTicket = OrderSend(Symbol(),cmd,Lots,myPrice,3,myStop,myProfit,NULL,myMagic,0,myColour); //Открытие сделки.
}
return(0);
}
Здравствуйте!!!
Кому не сложно ,декомпельните пожалуйста этот индюк.
Буду очень благодарен.
Andresmit, для этого есть отдельная ветка на форуме
К примеру RSI стоит на М1 с периодом 21. Нам надо ещё к примеру RSI пятиминутный. В пятиминутке 5 одноминуток. Значит 21 x 5 = 105. Тыкаем ещё RSI с периодом 105 на М1 и получаем МТФ с пятиминутки, который не рисует.
Проблема может быть в этом:Здравствуйте,
Я написал советник, код которого приведен ниже.
Суть советника в том, что он в самом начале открывает сделку buy, лотом 0.01. Если она выбьет стоп лосс, открывается еще одна сделка в ту же сторону, но удвоенным лотом. Мартингейл короче. Но, это Мартингейл с насыщением так сказать. Если LotFactor поставить 10, то он ограничит рост лота на отметке 5.12(если изначальный был 0.01) и дальше лот изменяться не будет до тех пор, пока не появится выигрышная сделка. Возможно в коде есть ошибка, однако в тестере стратегий этот советник работает четко как надо.
Он нормально тестируется в тестере, но когда я ставлю его на график, он почему-то не торгует. На скриншоте видны настройки и то, что советник включен(смайлик). В журнале единственная строчка: 2013.04.26 15:56:04 Expert PureMartingale EURUSD,H1: loaded successfully. Однако когда я ставлю ручное подтверждение в настройках, он сразу предлагает открыть сделку. Я пробовал данный советник на разных компьютерах с MT4, и на обоих одно и тоже. Подскажите, в чем может быть проблема? Заранее большое спасибо!
Код советника:
PHP:extern int LotFactor=10; //Эта переменная только для удобства оптимизации советника. extern int StopLoss=500; extern int TakeProfit=750; extern double Lot=0.01; //Изначальный лот. double LotF=513; //Это множитель для насыщения. bool buy=true; //Будет ли сделка BUY или SELL int init() { return(0); } int start() { switch(LotFactor) //Тут в зависимости от переменной LotFactor будет выбираться множитель для лота. По умолчанию LotFactor = 10, т.е. множитель (LotF) равен 513. { case 1 : LotF=1.5; break; case 2 : LotF=3; break; case 3 : LotF=5; break; case 4 : LotF=9; break; case 5 : LotF=17; break; case 6 : LotF=33; break; case 7 : LotF=65; break; case 8 : LotF=129; break; case 9 : LotF=257; break; case 10 : LotF=513; break; case 11 : LotF=1025; break; case 12 : LotF=2049; break; default : LotF=513; break; } int total, oldtotal, cnt, myTicket, myMagic=111; bool myTrades = false; total = OrdersTotal(); for(cnt = 0; cnt < total; cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == myMagic) { myTicket = OrderTicket(); myTrades = true; } } double Lots = Lot; // Lots - это лот, на который советник будет торговать. В начале он задается равным тому лоту, что мы ставим в настройках советника. oldtotal = OrdersHistoryTotal(); if(oldtotal > 0) { OrderSelect(oldtotal - 1, SELECT_BY_POS, MODE_HISTORY); //Выбираем предыдущий ордер из истории. if(OrderProfit() > 0) //Если этот предыдущий ордер из истории был выигрышным - меняем направление сделки. { if(OrderType() == OP_BUY) { buy=false; } if(OrderType() == OP_SELL) { buy=true; } } if(OrderProfit() < 0) //Если этот предыдущий ордер из истории был проигрышным - сохраняем направление сделки. { Lots = OrderLots() * 2; // И удваиваем лот. if(OrderType() == OP_BUY) { buy=true; } if(OrderType() == OP_SELL) { buy=false; } } else { Lots = Lot; // Когда попалась выигрышная сделка, лот сбрасывается. } } if(Lots > Lot*LotF) // Если лот превышает установленный лот, домноженный на LotF, то больше лот не удваивается, а сохраняется таким, какой он есть, до первой выигрышной сделки. //ПРИМЕР: Lot = 0.01, LotF = 513; Если текущий лот из-за серии убытков стал больше чем 0.01*513 = 5.13, то при дальнейших убытках лот будет сохранять значение 5.13, и когда появится выигрышная сделка, он сбросится до 0.01. { Lots = OrderLots(); } int myColour, cmd; double myPrice, myPriceClose, myStop, myProfit; if(myTrades == false) { if(buy == true) // BUY { cmd = 0; myPrice = Ask; myPriceClose = Bid; myColour = Green; myStop = Ask - Point*StopLoss; myProfit = Ask + Point*TakeProfit; } if(buy == false) // SELL { cmd = 1; myPrice = Bid; myPriceClose = Ask; myColour = Red; myStop = Bid + Point*StopLoss; myProfit = Bid - Point*TakeProfit; } myTicket = OrderSend(Symbol(),cmd,Lots,myPrice,3,myStop,myProfit,NULL,myMagic,0,myColour); //Открытие сделки. } return(0); }
myTicket = OrderSend(Symbol(),cmd,Lots,myPrice,3,myStop,myProfit,NULL,myMagic,0,myColour);
Здраствуйте ) помогите с тралом а то у меня мозгов нехватает штоб дописать етот сов (( тоисть трал я дописиваю но он неработает:facepalm:
Доброго времени суток а это нормально что ADX терминал иногда подгружает если нет то подскажите пожалуйста решение Зарание благодарен всем профитов!!!:usdupup:
Помогите прикрутить окно инфо к советнику в архиве сова и индюк lease: