viwm
Новичок форума
К советнику добавил мартина, но он не всегда срабатывает. Прибыльность с использованием мартина думаю станет больше. Прошу помощи или подсказки. Функция мартина встроена в советник.
PHP:
//+------------------------------------------------------------------+
//| Nowt v2.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright "MonsterMQL"
#property link "[email protected]"
extern double Lot= 0.5;
extern int stoploss=50;
extern int takeprofit=30;
extern int Magic = 99999999; // - уникальный номер, кот. советник метит сови ордера и впоследствии работает только с ними. При постановке на разные графики или т/ф, межики должны быть разными
extern int Slipp = 10; // - величина максимально возможного проскальзывания. В роботе реализован модуль безусловного открытия/закрытия сделок. Т.е. робот будет пытаться открыть / закрыть сделку пока не сделует это. Поэтому во избежание долгого преодоления реквот рекомендую выставлять этот параметр равный 5 для пятизнака или 1 для 4-х знака
// настройки индикаторов:
// ZigZag_Pointer_alert:
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
// полосы боллинджера:
extern int period_1 = 20;
extern int price_1 = 0;
int M, i, k;
double M1, SL, TP, D, d, DD, dd, u, U, uu, op, up, dp, H, L;
bool ss, bb;
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
datetime OldTime;
int start()
{
//=================================================================================
k=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}
if(bb==true && k==0 && op!=U) // покупка
{
op=U;
SL = Ask-stoploss*Point;
if (stoploss == 0) SL = 0;
TP = Ask+takeprofit*Point;
if (takeprofit == 0 ) TP = 0;
RefreshRates();
M = OrderSend (Symbol(), OP_BUY, getLots(), Ask, Slipp, SL, TP, NULL, Magic, 0, Blue);
while (M < 0)
{
Sleep(2000);
RefreshRates();
M = OrderSend (Symbol(), OP_BUY, getLots(), Ask, Slipp, SL, TP, NULL, Magic, 0, Blue);
}
/*
if (SL != 0 || TP != 0)
{
RefreshRates();
OrderSelect (M, SELECT_BY_TICKET);
bool c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
while (c == false)
{
Sleep(2000);
RefreshRates();
OrderSelect (M, SELECT_BY_TICKET);
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
} }
*/
}
//---------------------------------------------------------------------------------------------------------+
k=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}
if(ss==true && k==0 && op!=D) // продажа
{
op=D;
SL = Bid+stoploss*Point;
if (stoploss == 0) SL = 0;
TP = Bid-takeprofit*Point;
if (takeprofit == 0 ) TP = 0;
RefreshRates();
M = OrderSend (Symbol(), OP_SELL, Lot, Bid, Slipp, SL, TP, NULL, Magic, 0, Red);
while (M < 0)
{
Sleep(2000);
RefreshRates();
M = OrderSend (Symbol(), OP_SELL, Lot, Bid, Slipp, SL, TP, NULL, Magic, 0, Red);
}
/*
if (SL != 0 || TP != 0)
{
RefreshRates();
OrderSelect (M, SELECT_BY_TICKET);
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
while (c == false)
{
Sleep(2000);
RefreshRates();
OrderSelect (M, SELECT_BY_TICKET);
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
} }
*/
}
//====================================================================
k=0; D=0; U=0;
for(i=0; k<2; i++)
{
u = iCustom(NULL, 0, "ZigZag_Pointer_alert", ExtDepth, ExtDeviation, ExtBackstep, 0, i);
d = iCustom(NULL, 0, "ZigZag_Pointer_alert", ExtDepth, ExtDeviation, ExtBackstep, 1, i);
if(u>0)
{
U=u;
D=0;
k++;
}
if(d>0)
{
D=d;
U=0;
k++;
}
up = iCustom(NULL, 0, "PBF_Scalper_Show_Me", 1, i);
dp = iCustom(NULL, 0, "PBF_Scalper_Show_Me", 0, i);
M1 = iMA(NULL, 0, period_1, 0, 0, price_1, i);
H = High[i];
L = Low[i];
}
ss=false;
if(D>0 && dp>0 && H > M1) ss = true;
bb=false;
if(U>0 && up>0 && L < M1) bb=true;
//ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
}
return(0);
//Мартингейл
//+--------------------------- getLots ----------------------------------+
double getLots()
{
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
int round = MathAbs(MathLog(minlot) / MathLog(10.0)) + 0.5;
double result = Lot;
int total = OrdersHistoryTotal();
double spread = MarketInfo(Symbol(), MODE_SPREAD);
// double k = (tp + sl) / (tp - spread);
for (int i = 0; i < total; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
//if (OrderSymbol() == Symbol() && OrderMagicNumber() == mn) {
if (OrderProfit() > 0)
{
result = Lot;
}
else
{
result = result * 2;
}
//}
}
result = NormalizeDouble(result, round);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
if (result > maxlot)
{
result = maxlot;
}
RefreshRates();
return(result);
}
Вложения
Последнее редактирование модератором: