Помощь в кодировании - страница 104

 

Спасибо большое, Младен .... Вы великолепны ...

 

Привет, ребята,

помогите, пожалуйста, с моим запросом на странице 103. Я искал информацию в интернете, но так и не смог заставить срабатывать оповещение на каждые 5 бар (начиная с начала часа).

Заранее спасибо

 

Уважаемый Mladen/Mr Tools Не могли бы вы исправить эту еа так, чтобы она не открывала сделку заново после того, как стоп или tp будет достигнут.

Файлы:
 

Помощь в кодировании для стоп-лосса

Привет, ребята,

У меня есть советник, который я не могу изменить стоп-лосс.

Независимо от того, что я меняю, он не меняется. Я бы хотел изменить стоп-лосс хотя бы до 300. Есть идеи?

Заранее спасибо

вот код для этого:

// общий пользовательский ввод

extern double Lots=1.0;

extern int TakeProfit=44;

extern int StopLoss=90;

extern bool RSIMethodA=false;

extern bool RSIMethodB=true;

extern int RSIValue=50;

extern bool AbandonMethodA=true;

extern bool AbandonMethodB=false;

extern int Abandon=101;

extern bool MoneyManagement=true;

extern int Risk=2;

extern int Slippage=3;

extern bool UseProfitLock=true;

extern int BreakEvenTrigger=25;

extern int BreakEven=3;

extern bool LiveTrading=false;

extern bool AccountIsMini=false;

extern int maxTradesPerPair=1;

extern int MagicNumber=5432;

double lotMM;

bool BuySignal=false;

bool SetBuy=false;

bool SellSignal=false;

bool SetSell=false;

// Обработка баров

datetime bartime=0;

int bartick=0;

int TradeBars=0;

//+------------------------------------------------------------------+

//| Функция инициализации эксперта |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| функция деинициализации эксперта | |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| функция запуска эксперта |

//+------------------------------------------------------------------+

int start()

{

//----

if (UseProfitLock) ProfitLockStop();

if (AbandonMethodA || AbandonMethodB)

{

RunAbandonCheck();

RunAbandonMethods();

}

if (!SetLotsMM()) return(0);

RunOrderTriggerCalculations();

RunPairSpesificSettings();

RunNewOrderManagement();

//----

return(0);

}

/////////////////////////////////////////////////

// SetLotsMM - By Robert Cochran http://autoforex.biz

/////////////////////////////////////////////////

bool SetLotsMM()

{

double MarginCutoff;

if(!AccountIsMini) MarginCutoff = 1000;

if( AccountIsMini) MarginCutoff = 100;

if(AccountFreeMargin() < MarginCutoff) return(false);

if(MoneyManagement)

{

lotMM = MathCeil(AccountBalance() * Risk / 10000) / 10;

if(lotMM < 0.1) lotMM = Lots;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

// Обеспечение соблюдения границ размера лота

if(LiveTrading)

{

if( AccountIsMini) lotMM = lotMM * 10;

if(!AccountIsMini && lotMM < 1.0) lotMM = 1.0;

}

if(lotMM > 100) lotMM = 100;

}

else

{

lotMM = Lots; // Измените MoneyManagement на 0, если хотите, чтобы параметр Lots действовал.

}

return (true);

}

//+------------------------------------------------------------------+

/////////////////////////////////////////////////

// RunOrderTriggerCalculations

/////////////////////////////////////////////////

bool RunOrderTriggerCalculations()

{

bool RSIPOS=false;

bool RSINEG=false;

// 3-периодная скользящая средняя на баре[1]

double bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1);

// 7-периодная скользящая средняя на баре[1]

double bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1);

// 2-периодная скользящая средняя на баре[2]

double RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2);

double RSI2=iRSI(Symbol(),0,2,PRICE_CLOSE,1);

// Определите, в какой полярности находится RSI

if (RSIMethodA)

{

if(RSI>RSIValue && RSI2<RSIValue)

{

RSIPOS=true;

RSINEG=false;

}

else RSIPOS=false;

if(RSIRSIValue)

{

RSIPOS=false;

RSINEG=true;

}

else RSINEG=false;

}

if (RSIMethodB)

{

if(RSI>RSIValue)

{

RSIPOS=true;

RSINEG=false;

}

if(RSI<RSIValue)

{

RSIPOS=false;

RSINEG=true;

}

}

if ((bullMA3 > (bearMA7+Point)) && RSINEG)

{

BuySignal=true;

}

else BuySignal=false;

if ((bullMA3 < (bearMA7-Point)) && RSIPOS)

{

SellSignal=true;

}

else SellSignal=false;

return(true);

}

/////////////////////////////////////////////////

// OpenOrdersBySymbolAndComment

/////////////////////////////////////////////////

int OpenOrdersForThisEA()

{

int ofts=0;

for(int x=0;x<OrdersTotal();x++)

{

OrderSelect(x, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

ofts++;

}

}

return(ofts);

}

/////////////////////////////////////////////////

// PROFIT LOCK - By Robert Cochran - http://autoforex.biz

/////////////////////////////////////////////////

bool ProfitLockStop()

{

if( OpenOrdersForThisEA() > 0 )

{

for ( int i = 0; i < OrdersTotal(); i++){

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

//--- ДЛИННЫЕ СДЕЛКИ

if(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber()== MagicNumber)

{

if (Bid >= OrderOpenPrice() + BreakEvenTrigger*Point &&

OrderOpenPrice() > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + BreakEven * Point, OrderTakeProfit(), Green);

}

}

//--- КОРОТКИЕ СДЕЛКИ

if(OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber()==MagicNumber)

{

if (Ask <= OrderOpenPrice() - BreakEvenTrigger*Point &&

OrderOpenPrice() < OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice() - BreakEven * Point, OrderTakeProfit(), Blue);

}

}

}

}

}

/////////////////////////////////////////////////

// ОТКАЗ ОТ ПРОВЕРКИ

/////////////////////////////////////////////////

bool RunAbandonCheck()

{

if( OpenOrdersForThisEA() > 0 )

{

if (TradeBars == 0 && bartick == 0)

{

for (int i = 0; i < OrdersTotal(); i++)

{

if (OrderSymbol() == Symbol())

{

TradeBars = MathFloor(CurTime() - OrderOpenTime())/60/Period();

bartime = Time[0];

bartick = TradeBars;

}

}

}

if(bartime!=Time[0])

{

bartime=Time[0];

bartick++;

}

}

return(true);

}

/////////////////////////////////////////////////

// RunAbandonMethods

/////////////////////////////////////////////////

bool RunAbandonMethods()

{

if( OpenOrdersForThisEA() > 0 )

{

for (int i = 0; i < OrdersTotal(); i++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if (AbandonMethodA && bartick==Abandon)//Force "HEDGE" after abandon

{

// ДЛИННЫЕ ТОРГОВЛИ

if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue);

SetSell=true;

продолжаем;

}

// КОРОТКИЕ СДЕЛКИ

if (OrderType() == OP_SELL && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Blue);

SetBuy=true;

продолжаем;

}

}

if (AbandonMethodB && bartick==Abandon)//Индикаторы определяют направление после отказа от сделки

{

// ДЛИННЫЕ ТОРГОВЛИ

if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,White);

continue;

}

// КОРОТКИЕ СДЕЛКИ

if (OrderType() == OP_SELL && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White);

continue;

}

}

}

}

return(true);

}

/////////////////////////////////////////////////

// RunPairSpesificSettings

/////////////////////////////////////////////////

bool RunPairSpesificSettings()

{

// настраиваем оптимизацию символов

if (Symbol()=="GBPUSD")

{

TakeProfit=55; StopLoss=100; Abandon=69;

}

return (true);

}

/////////////////////////////////////////////////

// RunNewOrderManagement

/////////////////////////////////////////////////

bool RunNewOrderManagement()

{

double TP,SL;

if( OpenOrdersForThisEA() < maxTradesPerPair )

{

//ENTRY Ask(buy, long)

if (BuySignal || SetBuy)

{

SL = Ask - StopLoss*Point;

TP = Ask + TakeProfit*Point;

OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Long",MagicNumber,0,White);

bartick=0;

if (SetBuy) SetBuy=false;

return (true);

}

//ENTRY Bid (sell, short)

if (SellSignal || SetSell)

{

SL = Bid + StopLoss*Point;

TP = Bid - TakeProfit*Point;

OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Short",MagicNumber,0,Red);

bartick=0;

if (SetSell) SetSell=false;

return (true);

}

}

return(true);

}

 
graphics:
Привет ребята,

У меня есть советник, который я не могу изменить стоп-лосс.

Независимо от того, что я меняю, он не меняется. Я хотел бы изменить стоп-лосс хотя бы до 300. Есть идеи?

Заранее спасибо

вот код для этого:

// общий пользовательский ввод

extern double Lots=1.0;

extern int TakeProfit=44;

extern int StopLoss=90;

extern bool RSIMethodA=false;

extern bool RSIMethodB=true;

extern int RSIValue=50;

extern bool AbandonMethodA=true;

extern bool AbandonMethodB=false;

extern int Abandon=101;

extern bool MoneyManagement=true;

extern int Risk=2;

extern int Slippage=3;

extern bool UseProfitLock=true;

extern int BreakEvenTrigger=25;

extern int BreakEven=3;

extern bool LiveTrading=false;

extern bool AccountIsMini=false;

extern int maxTradesPerPair=1;

extern int MagicNumber=5432;

double lotMM;

bool BuySignal=false;

bool SetBuy=false;

bool SellSignal=false;

bool SetSell=false;

// Обработка баров

datetime bartime=0;

int bartick=0;

int TradeBars=0;

//+------------------------------------------------------------------+

//| Функция инициализации эксперта |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| функция деинициализации эксперта | |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| функция запуска эксперта |

//+------------------------------------------------------------------+

int start()

{

//----

if (UseProfitLock) ProfitLockStop();

if (AbandonMethodA || AbandonMethodB)

{

RunAbandonCheck();

RunAbandonMethods();

}

if (!SetLotsMM()) return(0);

RunOrderTriggerCalculations();

RunPairSpesificSettings();

RunNewOrderManagement();

//----

return(0);

}

/////////////////////////////////////////////////

// SetLotsMM - By Robert Cochran Welcome autoforex.biz - BlueHost.com

/////////////////////////////////////////////////

bool SetLotsMM()

{

double MarginCutoff;

if(!AccountIsMini) MarginCutoff = 1000;

if( AccountIsMini) MarginCutoff = 100;

if(AccountFreeMargin() < MarginCutoff) return(false);

if(MoneyManagement)

{

lotMM = MathCeil(AccountBalance() * Risk / 10000) / 10;

if(lotMM < 0.1) lotMM = Lots;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

// Обеспечение соблюдения границ размера лота

if(LiveTrading)

{

if( AccountIsMini) lotMM = lotMM * 10;

if(!AccountIsMini && lotMM < 1.0) lotMM = 1.0;

}

if(lotMM > 100) lotMM = 100;

}

else

{

lotMM = Lots; // Измените MoneyManagement на 0, если хотите, чтобы параметр Lots действовал.

}

return (true);

}

//+------------------------------------------------------------------+

/////////////////////////////////////////////////

// RunOrderTriggerCalculations

/////////////////////////////////////////////////

bool RunOrderTriggerCalculations()

{

bool RSIPOS=false;

bool RSINEG=false;

// 3-периодная скользящая средняя на баре[1]

double bullMA3=iMA(Symbol(),0,3,0,MODE_EMA,PRICE_CLOSE,1);

// 7-периодная скользящая средняя на баре[1]

double bearMA7=iMA(Symbol(),0,7,0,MODE_EMA,PRICE_CLOSE,1);

// 2-периодная скользящая средняя на баре[2]

double RSI=iRSI(Symbol(),0,2,PRICE_CLOSE,2);

double RSI2=iRSI(Symbol(),0,2,PRICE_CLOSE,1);

// Определите, в какой полярности находится RSI

if (RSIMethodA)

{

if(RSI>RSIValue && RSI2<RSIValue)

{

RSIPOS=true;

RSINEG=false;

}

else RSIPOS=false;

if(RSIRSIValue)

{

RSIPOS=false;

RSINEG=true;

}

else RSINEG=false;

}

if (RSIMethodB)

{

if(RSI>RSIValue)

{

RSIPOS=true;

RSINEG=false;

}

if(RSI<RSIValue)

{

RSIPOS=false;

RSINEG=true;

}

}

if ((bullMA3 > (bearMA7+Point)) && RSINEG)

{

BuySignal=true;

}

else BuySignal=false;

if ((bullMA3 < (bearMA7-Point)) && RSIPOS)

{

SellSignal=true;

}

else SellSignal=false;

return(true);

}

/////////////////////////////////////////////////

// OpenOrdersBySymbolAndComment

/////////////////////////////////////////////////

int OpenOrdersForThisEA()

{

int ofts=0;

for(int x=0;x<OrdersTotal();x++)

{

OrderSelect(x, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

ofts++;

}

}

return(ofts);

}

/////////////////////////////////////////////////

// PROFIT LOCK - Роберт Кокран - Добро пожаловать autoforex.biz - BlueHost.com

/////////////////////////////////////////////////

bool ProfitLockStop()

{

if( OpenOrdersForThisEA() > 0 )

{

for ( int i = 0; i < OrdersTotal(); i++){

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

//--- ДЛИННЫЕ СДЕЛКИ

if(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber()== MagicNumber)

{

if (Bid >= OrderOpenPrice() + BreakEvenTrigger*Point &&

OrderOpenPrice() > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + BreakEven * Point, OrderTakeProfit(), Green);

}

}

//--- КОРОТКИЕ СДЕЛКИ

if(OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber()==MagicNumber)

{

if (Ask <= OrderOpenPrice() - BreakEvenTrigger*Point &&

OrderOpenPrice() < OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(),OrderOpenPrice() - BreakEven * Point, OrderTakeProfit(), Blue);

}

}

}

}

}

/////////////////////////////////////////////////

// ОТКАЗ ОТ ПРОВЕРКИ

/////////////////////////////////////////////////

bool RunAbandonCheck()

{

if( OpenOrdersForThisEA() > 0 )

{

if (TradeBars == 0 && bartick == 0)

{

for (int i = 0; i < OrdersTotal(); i++)

{

if (OrderSymbol() == Symbol())

{

TradeBars = MathFloor(CurTime() - OrderOpenTime())/60/Period();

bartime = Time[0];

bartick = TradeBars;

}

}

}

if(bartime!=Time[0])

{

bartime=Time[0];

bartick++;

}

}

return(true);

}

/////////////////////////////////////////////////

// RunAbandonMethods

/////////////////////////////////////////////////

bool RunAbandonMethods()

{

if( OpenOrdersForThisEA() > 0 )

{

for (int i = 0; i < OrdersTotal(); i++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if (AbandonMethodA && bartick==Abandon)//Force "HEDGE" after abandon

{

// ДЛИННЫЕ ТОРГОВЛИ

if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue);

SetSell=true;

продолжаем;

}

// КОРОТКИЕ СДЕЛКИ

if (OrderType() == OP_SELL && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Blue);

SetBuy=true;

продолжаем;

}

}

if (AbandonMethodB && bartick==Abandon)//Индикаторы определяют направление после отказа от сделки

{

// ДЛИННЫЕ ТОРГОВЛИ

if (OrderType() == OP_BUY && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,White);

continue;

}

// КОРОТКИЕ СДЕЛКИ

if (OrderType() == OP_SELL && OrderSymbol() == Symbol() &&

OrderMagicNumber()==MagicNumber)

{

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White);

continue;

}

}

}

}

return (true);

}

/////////////////////////////////////////////////

// RunPairSpesificSettings

/////////////////////////////////////////////////

bool RunPairSpesificSettings()

{

// настраиваем оптимизацию символов

if (Symbol()=="GBPUSD")

{

TakeProfit=55; StopLoss=100; Abandon=69;

}

return (true);

}

/////////////////////////////////////////////////

// RunNewOrderManagement

/////////////////////////////////////////////////

bool RunNewOrderManagement()

{

double TP,SL;

if( OpenOrdersForThisEA() < maxTradesPerPair )

{

//ENTRY Ask(buy, long)

if (BuySignal || SetBuy)

{

SL = Ask - StopLoss*Point;

TP = Ask + TakeProfit*Point;

OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Long",MagicNumber,0,White);

bartick=0;

if (SetBuy) SetBuy=false;

return (true);

}

//ENTRY Bid (sell, short)

if (SellSignal || SetSell)

{

SL = Bid + StopLoss*Point;

TP = Bid - TakeProfit*Point;

OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,SL,TP, "TS-ProfitLock - "+Symbol()+" - Short",MagicNumber,0,Red);

bartick=0;

if (SetSell) SetSell=false;

return (true);

}

}

return(true);

}

Он всегда будет устанавливать StopLoss на 100, если символ GBPUSD.

Для остальных все должно работать нормально (за исключением того, что вы должны умножить стоп-лосс на 10 для 5-значных брокеров, так как советник работает с пунктами, а не с пипсами).

 

В данный момент я использую его на USD/JPY, и стоп-лосс все еще остается на уровне 100.

Где я могу найти множитель стоп-лосса?

 
graphics:
Я использую его на USD/JPY в данный момент, и стоп-лосс все еще остается на 100. Где я могу найти множитель стоп-лосса?

Стоп-лосс и тейк-профит устанавливаются в этой части:

bool RunNewOrderManagement()

{

double TP,SL;

if( OpenOrdersForThisEA() < maxTradesPerPair )

{

//ENTRY Ask(buy, long)

if (BuySignal || SetBuy)

{

SL = Ask - StopLoss*Point;

TP = Ask + TakeProfit*Point;

OrderSend(Symbol(),OP_BUY,lotMM,Ask,Slippage,SL,TP ,"TS-ProfitLock - "+Symbol()+" - Long",MagicNumber,0,White);

bartick=0;

if (SetBuy) SetBuy=false;

return(true);

}

//ENTRY Bid (sell, short)

if (SellSignal || SetSell)

{

SL = Bid + StopLoss*Point;

TP = Bid - TakeProfit*Point;

OrderSend(Symbol(),OP_SELL,lotMM,Bid,Slippage,SL,T P,"TS-ProfitLock - "+Symbol()+" - Short",MagicNumber,0,Red);

bartick=0;

if (SetSell) SetSell=false;

return(true);

}

}

return(true);

}[/PHP]

As of stop loss that stays 100 : this part of code

[PHP]bool RunPairSpesificSettings()

{

// set up the symbol optimizations

if (Symbol()=="GBPUSD")

{

TakeProfit=55; StopLoss=100; Abandon=69;

}

return(true);

}

активируется только если символ "GBPUSD" (как видно из кода), поэтому только в этом случае он возвращается. Проверьте ваш код еще раз и посмотрите на 100 и вы увидите, что происходит с вашими стоп-лоссами, так как в коде, который вы приложили, стоп-лосс возвращается только в случае GBPUSD.

 

Он по-прежнему не меняет стоп-лосс, даже если я меняю валютные пары на те, которыми я торгую. Этот советник был бы идеальным, если бы стоп-лосс можно было изменить.

Спасибо за попытку помочь в любом случае.

 

Привет кодеры,

Может ли кто-нибудь помочь модифицировать этот индикатор squeeze break, чтобы иметь опцию EMA bollinger band, а также опцию EMA keltner channel?

Спасибо :)

Файлы:
 
iwillsurvive:
Привет кодеры,

Может ли кто-нибудь помочь модифицировать этот индикатор прорыва сжатия, чтобы иметь опцию полосы Боллинджера EMA, а также опцию канала Кельтнера EMA?

Спасибо :)

Привет, Iwillsurvive, изменил индикатор так, что у вас будет выбор ma как в полосе кельтнера, так и в полосе боллинджера, по умолчанию он установлен на EMA.

Файлы: