Ajuda na codificação - página 104

 

Obrigado uma tonelada Mladen .... Você é ótimo ...

 

Oi, pessoal,

qualquer ajuda com meu pedido na página 103, por favor? Tenho procurado informações online, mas não consegui obter o alerta para cada 5 bar para disparar (a partir do início da hora).

Agradecemos antecipadamente

 

Caro Mladen/Mr Tools Can u please u fixen esta ea para que ela não reabra o comércio uma vez que pare ou tp é atingido.

Arquivos anexados:
 

Ajuda de codificação para parar a perda

Oi, pessoal,

Eu tenho este EA que parece não poder mudar o Stop Loss nele.

Não importa o que eu mude, ela não mudará. Eu gostaria de mudar o Stop Loss para pelo menos 300. Alguma idéia?

Obrigado de antemão.

este é o código para isso:

// entrada do usuário genérico

Lotes duplos externos=1,0;

externamente int TakeProfit=44;

externo int StopLoss=90;

externo bool RSIMethodA=falso;

bool RSIMethodB=verdadeiro;

RSIValue externo int=50;

bool externo AbandonMethodA=verdadeiro;

bool externo AbandonMethodB=falso;

externo int Abandonar=101;

bool externo MoneyManagement=verdadeiro;

extern int Risk=2;

extern int Slippage=3;

extern bool UseProfitLock=verdadeiro;

externo int BreakEvenTrigger=25;

extern int BreakEven=3;

extern bool LiveTrading=false;

extern bool AccountIsMini=falso;

extern int maxTradesPerPair=1;

externo int MagicNumber=5432;

double lotMM;

bool BuySignal=falso;

bool SetBuy=falso;

bool SellSignal=falso;

bool SetSellSell=falso;

// Manuseio de barras

data/hora de barra=0;

int bartick=0;

int TradeBars=0;

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

//| função de iniciação de especialista |

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

int init()

{

//----

//----

retorno(0);

}

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

//| função de desinicialização especializada |

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

int deinit()

{

//----

//----

retorno(0);

}

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

//| função de início especializado |

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

int start()

{

//----

se (UseProfitLock) ProfitLockStop();

if (AbandonMethodA || AbandonMethodB)

{

RunAbandonCheck();

RunAbandonMethods();

}

se (!SetLotsMM()) retornar(0);

RunOrderTriggerCalculations();

RunPairSpesificSettings();

RunNewOrderManagement();

//----

retorno(0);

}

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

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

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

bool SetLotsMM()

{

MarginCutoff duplo;

if(!AccountIsMini) MarginCutoff = 1000;

if((!AccountIsMini) MarginCutoff = 100;

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

if(MoneyManagement)

{

loteMM = MathCeil(AccountBalance() * Risco / 10000) / 10;

if(lotMM < 0,1) lotMM = Lotes;

if(loteMM > 1,0) loteMM = MathCeil(loteMM);

// Forçar limites de tamanho de lote

if(LiveTrading)

{

if( AccountIsMini) lotMM = lotMM * 10;

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

}

if(lotMM > 100) lotMM = 100;

}

senão

{

lotMM = Lots; // Mude o MoneyManagement para 0 se você quiser que o parâmetro Lots esteja em vigor

}

retorno(verdadeiro);

}

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

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

// RunOrderTriggerCálculos

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

Bool RunOrderTriggerCálculos()

{

bool RSIPOS=falso;

bool RSINEG=falso;

// média móvel de 3 períodos em Bar[1]

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

// média móvel de 7 períodos em Bar[1]

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

// média móvel de 2 períodos em Bar[2]

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

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

// Determinar em que polaridade RSI está

se (RSIMethodA)

{

if(RSI>RSIValue && RSI2<RSIValue)

{

RSIPOS=verdadeiro;

RSINEG=falso;

}

senão RSIPOS=falso;

if(RSIRSIValue)

{

RSIPOS=falso;

RSINEG=verdadeiro;

}

senão RSINEG=falso;

}

se (RSIMethodB)

{

if(RSI>RSIValue)

{

RSIPOS=verdadeiro;

RSINEG=falso;

}

if(RSI<RSIValue)

{

RSIPOS=falso;

RSINEG=verdadeiro;

}

}

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

{

BuySignal=verdadeiro;

}

caso contrário, BuySignal=false;

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

{

SellSignal=verdadeiro;

}

caso contrário, SellSignal=false;

return(true);

}

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

// OpenOrdersBySymbolAndComment

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

int OpenOrdersForThisEA()

{

int ofts=0;

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

{

OrderSelect(x, SELECT_BY_POS, MODE_TRADES);

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

{

ofts+++;

}

}

retorno(ofts);

}

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

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

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

bool ProfitLockStop()

{

if( OpenOrdersForThisEA() > 0 )

{

para ( int i = 0; i < OrderTotal(); i++){

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

//--COMÉRCIO LONGO

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

{

if (Licitação >= OrderOpenPrice() + BreakEvenTrigger*Point &&

OrderOpenPrice() > OrderStopLoss())

{

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

}

}

//... - COMÉRCIOS CURTOS

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

{

se (Pergunte <= OrderOpenPrice() - BreakEvenTrigger*Point &&

OrderOpenPrice() < OrderStopLoss())

{

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

}

}

}

}

}

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

// VERIFICAÇÃO DE ABANDONO

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

Bool RunAbandonCheck()

{

if( OpenOrdersForThisEA() > 0 )

{

se (TradeBars == 0 && bartick == 0)

{

para (int i = 0; i < OrderTotal(); i++)

{

se (OrderSymbol() == Symbol())

{

TradeBars = MathFloor(CurTime() - OrderOpenTime())/60/Período();

bartime = Tempo[0];

bartick = TradeBars;

}

}

}

if(bartime!=Time[0])

{

bartime=Time[0];

bartick++;

}

}

retorno(true);

}

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

// RunAbandonMethods

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

Bool RunAbandonMethods()

{

if( OpenOrdersForThisEA() > 0 )

{

para (int i = 0; i < OrderTotal(); i++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if (AbandonMethodA && bartick==Abandonar)//Forçar "HEDGE" após abandono

{

// COMÉRCIO A LONGO PRAZO

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

OrderMagicNumber()==MagicNumber)

{

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

SetSell=true;

continuar;

}

// PEQUENAS NEGOCIAÇÕES

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

OrderMagicNumber()==MagicNumber)

{

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

SetBuy=verdadeiro;

continuar;

}

}

se (AbandonMethodB && bartick==Abandon)//Indicadores decidem a direção após o abandono

{

// COMÉRCIO A LONGO PRAZO

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

OrderMagicNumber()==MagicNumber)

{

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

continuar;

}

// PEQUENAS NEGOCIAÇÕES

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

OrderMagicNumber()==MagicNumber)

{

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

continuar;

}

}

}

}

retorno(true);

}

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

// RunPairSpesificSettings

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

Bool RunPairSpesificSettings()

{

// estabelecer as otimizações dos símbolos

se (Symbol()=="GBPUSD")

{

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

}

retorno(true);

}

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

// Gestão de novas encomendas

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

Bool RunNewOrderManagement()

{

duplo TP,SL;

if( OpenOrdersForThisEA() < maxTradesPerPair )

{

//ENTRY Ask(comprar, longo)

se (BuySignal || SetBuy)

{

SL = Perguntar - 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=falso;

return(true);

}

//ENTRY Bid (venda, abreviado)

se (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);

}

}

retorno(true);

}

 
graphics:
Oi, pessoal,

Eu tenho este EA que parece não poder mudar o Stop Loss nele.

Não importa o que eu mude, ela não mudará. Eu gostaria de mudar o Stop Loss para pelo menos 300. Alguma idéia?

Obrigado de antemão.

este é o código para isso:

// entrada do usuário genérico

Lotes duplos externos=1,0;

externamente int TakeProfit=44;

externo int StopLoss=90;

externo bool RSIMethodA=falso;

bool RSIMethodB=verdadeiro;

RSIValue externo int=50;

bool externo AbandonMethodA=verdadeiro;

bool externo AbandonMethodB=falso;

externo int Abandonar=101;

bool externo MoneyManagement=verdadeiro;

extern int Risk=2;

extern int Slippage=3;

extern bool UseProfitLock=verdadeiro;

externo int BreakEvenTrigger=25;

extern int BreakEven=3;

extern bool LiveTrading=false;

extern bool AccountIsMini=falso;

extern int maxTradesPerPair=1;

externo int MagicNumber=5432;

double lotMM;

bool BuySignal=falso;

bool SetBuy=falso;

bool SellSignal=falso;

bool SetSellSell=falso;

// Manuseio de barras

data/hora de barra=0;

int bartick=0;

int TradeBars=0;

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

//| função de iniciação de especialista |

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

int init()

{

//----

//----

retorno(0);

}

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

//| função de desinicialização especializada |

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

int deinit()

{

//----

//----

retorno(0);

}

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

//| função de início especializado |

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

int start()

{

//----

se (UseProfitLock) ProfitLockStop();

if (AbandonMethodA || AbandonMethodB)

{

RunAbandonCheck();

RunAbandonMethods();

}

se (!SetLotsMM()) retornar(0);

RunOrderTriggerCalculations();

RunPairSpesificSettings();

RunNewOrderManagement();

//----

retorno(0);

}

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

// SetLotsMM - Por Robert Cochran Bem-vindo autoforex.biz - BlueHost.com

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

bool SetLotsMM()

{

MarginCutoff duplo;

if(!AccountIsMini) MarginCutoff = 1000;

if((!AccountIsMini) MarginCutoff = 100;

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

if(MoneyManagement)

{

loteMM = MathCeil(AccountBalance() * Risco / 10000) / 10;

if(lotMM < 0,1) lotMM = Lotes;

if(loteMM > 1,0) loteMM = MathCeil(loteMM);

// Forçar limites de tamanho de lote

if(LiveTrading)

{

if( AccountIsMini) lotMM = lotMM * 10;

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

}

if(lotMM > 100) lotMM = 100;

}

senão

{

lotMM = Lots; // Mude o MoneyManagement para 0 se você quiser que o parâmetro Lots esteja em vigor

}

retorno(verdadeiro);

}

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

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

// RunOrderTriggerCálculos

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

Bool RunOrderTriggerCálculos()

{

bool RSIPOS=falso;

bool RSINEG=falso;

// média móvel de 3 períodos em Bar[1]

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

// média móvel de 7 períodos em Bar[1]

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

// média móvel de 2 períodos em Bar[2]

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

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

// Determinar em que polaridade RSI está

se (RSIMethodA)

{

if(RSI>RSIValue && RSI2<RSIValue)

{

RSIPOS=verdadeiro;

RSINEG=falso;

}

senão RSIPOS=falso;

if(RSIRSIValue)

{

RSIPOS=falso;

RSINEG=verdadeiro;

}

senão RSINEG=falso;

}

se (RSIMethodB)

{

if(RSI>RSIValue)

{

RSIPOS=verdadeiro;

RSINEG=falso;

}

if(RSI<RSIValue)

{

RSIPOS=falso;

RSINEG=verdadeiro;

}

}

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

{

BuySignal=verdadeiro;

}

caso contrário, BuySignal=false;

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

{

SellSignal=verdadeiro;

}

caso contrário SellSignal=false;

return(true);

}

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

// OpenOrdersBySymbolAndComment

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

int OpenOrdersForThisEA()

{

int ofts=0;

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

{

OrderSelect(x, SELECT_BY_POS, MODE_TRADES);

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

{

ofts+++;

}

}

retorno(ofts);

}

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

// PROFIT LOCK - Por Robert Cochran - Bem-vindo autoforex.biz - BlueHost.com

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

bool ProfitLockStop()

{

if( OpenOrdersForThisEA() > 0 )

{

para ( int i = 0; i < OrderTotal(); i++){

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

//--COMÉRCIO LONGO

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

{

if (Licitação >= OrderOpenPrice() + BreakEvenTrigger*Point &&

OrderOpenPrice() > OrderStopLoss())

{

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

}

}

//... - COMÉRCIOS CURTOS

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

{

se (Pergunte <= OrderOpenPrice() - BreakEvenTrigger*Point &&

OrderOpenPrice() < OrderStopLoss())

{

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

}

}

}

}

}

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

// VERIFICAÇÃO DE ABANDONO

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

Bool RunAbandonCheck()

{

if( OpenOrdersForThisEA() > 0 )

{

se (TradeBars == 0 && bartick == 0)

{

para (int i = 0; i < OrderTotal(); i++)

{

se (OrderSymbol() == Symbol())

{

TradeBars = MathFloor(CurTime() - OrderOpenTime())/60/Período();

bartime = Tempo[0];

bartick = TradeBars;

}

}

}

if(bartime!=Time[0])

{

bartime=Time[0];

bartick++;

}

}

retorno(verdadeiro);

}

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

// RunAbandonMethods

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

Bool RunAbandonMethods()

{

if( OpenOrdersForThisEA() > 0 )

{

para (int i = 0; i < OrderTotal(); i++)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if (AbandonMethodA && bartick==Abandonar)//Forçar "HEDGE" após abandono

{

// COMÉRCIO A LONGO PRAZO

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

OrderMagicNumber()==MagicNumber)

{

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

SetSell=true;

continuar;

}

// PEQUENAS NEGOCIAÇÕES

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

OrderMagicNumber()==MagicNumber)

{

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

SetBuy=verdadeiro;

continuar;

}

}

se (AbandonMethodB && bartick==Abandon)//Indicadores decidem a direção após o abandono

{

// COMÉRCIO A LONGO PRAZO

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

OrderMagicNumber()==MagicNumber)

{

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

continuar;

}

// PEQUENAS NEGOCIAÇÕES

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

OrderMagicNumber()==MagicNumber)

{

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

continuar;

}

}

}

}

retorno(true);

}

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

// RunPairSpesificSettings

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

Bool RunPairSpesificSettings()

{

// estabelecer as otimizações dos símbolos

se (Symbol()=="GBPUSD")

{

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

}

retorno(true);

}

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

// Gestão de novas encomendas

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

Bool RunNewOrderManagement()

{

duplo TP,SL;

if( OpenOrdersForThisEA() < maxTradesPerPair )

{

//ENTRY Ask(comprar, longo)

se (BuySignal || SetBuy)

{

SL = Perguntar - 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=falso;

return(true);

}

//ENTRY Bid (venda, abreviado)

se (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);

}

}

retorno(true);

}

Sempre definirá StopLoss para 100 se o símbolo for GBPUSD

Para outros, deve funcionar bem (exceto que você deve multiplicar o stop loss por 10 para corretores de 5 dígitos, já que a EA trabalha com pontos e não com pips)

 

Estou usando-o em USD/JPY no momento e paro de perder ainda em 100.

Onde eu encontraria o multiplicador de stop loss?

 
graphics:
Estou usando-o em USD/JPY no momento e o stop loss ainda permanece em 100. Onde eu encontraria o multiplicador de stop loss?

Parar a perda e ter lucro são definidos nesta parte :

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);

}

é ativado somente se o símbolo for "GBPUSD" (como é visto pelo código), então somente nesse caso ele reverte. Verifique novamente seu código e procure por 100 e você encontrará o que está acontecendo com seu stop loss, pois no código que você anexou o stop loss é revertido somente no caso de GBPUSD

 

Mesmo que eu mude os pares de moedas para aqueles com os quais estou negociando, isso ainda não vai parar de perder. Este EA seria perfeito se o stop loss pudesse ser mudado.

Obrigado por tentar ajudar de qualquer forma.

 

Olá codificadores,

Alguém poderia ajudar a modificar este indicador de quebra de aperto para ter uma opção de banda de bollinger EMA, bem como uma opção de canal keltner EMA?

Obrigado :)

Arquivos anexados:
 
iwillsurvive:
Olá codificadores,

Alguém poderia ajudar a modificar este indicador de quebra de aperto para ter uma opção de banda de bollinger EMA, bem como uma opção de canal keltner EMA?

Obrigado :)

Olá Iwillsurvive, mudou o indicador para que você tenha uma opção de ma's tanto na banda de keltner como na banda de bollinger, por padrão está definido para EMA.

Arquivos anexados:
Razão: