Como codificar? - página 109

 

Gerenciar múltiplos negócios

Olá a todos,

Estou tentando desenvolver uma EA que possa teoricamente entrar em uma quantidade infinita de negócios, e administrar para cada negócio o:

  1. Trailing Stop
  2. Mudança para BE
  3. ATR-Trailing Stop
  4. etc

Eu sei que EAs como o exército suíço e a administraçãoTP podem fazer isso. Eu não sei como.

Alguma sugestão?

 

precisam de ajuda para escrever o código de interrupção do comércio após uma perda

Hi,

Preciso escrever o código para que um especialista pare de negociar por um número específico de horas após uma perda ou após duas ou três perdas consecutivas.

algum órgão pode me ajudar?

 

Codificação para Martinggle com cobertura fechada

Olá Equipe,

gostaria de buscar um código que possa me fornecer a solução de minhas estratégias de estado abaixo;

exemplos;

conceito de martingle...

TP = 23 pips

Vazios na tubulação = 20

OP compra UE 0.1,0.2,0.4,0.4,0.8,1.6 lote

1. se camada no lote 1,6 flutuando mais de -20pips então OP Sell EU com 12,8lot (tp 23).

2. se a camada do lote 12,8 atingir TP feche toda a posição EU.

3. se 12,8 lote pip=0 então feche a posição em Sell EU somente.

4. repetir a situação 1 até 3 novamente se a condição se aplicar.

Preciso de seu favor para me aconselhar sobre a função e os códigos.

 

questão codificadora

Neste momento este código funciona verificando se a abertura atual é mais alta do que a barra anterior. Minha pergunta é como eu a mudaria se eu quisesse ver se ela era mais alta OU IGUAL PARA a barra anterior?

if(Abrir[0] > Abrir[0+1] &&

Abrir[0+1] > Abrir[0+2] &&

Aberto[0+2]> Aberto[0+3] &&

Aberto[0+3] > Aberto[0+4] &&

Abrir[0+4] > Abrir[0+5] &&

Aberto[0+5] > Aberto[0+6]) Ordem = SIGNAL_SELL

Eu simplesmente adicionaria um = ao lado do sinal maior do que este = >?

Obrigado!

 

tente isto:

if(Open[0] => Open[0+1] &&

Open[0+1] => Open[0+2] &&

Open[0+2]=> Open[0+3] &&

Open[0+3] => Open[0+4] &&

Open[0+4] => Open[0+5] &&

Open[0+5] => Open[0+6]) Order = SIGNAL_SELL

 

sinais inversos de conselheiros especializados

oi

apenas brincando com este conselheiro especializado

#property copyright "FORTRADER.RU"

#property link "http://FORTRADER.RU"

/*

????????? ???????? ?????????? ????????? ???????? ? ?????? ??????? ?? 26 ??? 2008,

??????????? ? ?????? ?? ????? ???? ?????? ? ????? ????????????: letters@fortrader.ru

http://www.fortrader.ru/arhiv.php

A detailed description of the parameters adviser available issue of the journal dated May 26 2008,

suggestions and feedback we will be glad to see in our e-mail: letters@fortrader.ru

http://www.fortrader.ru/arhiv.php

*/

extern string x="????????? MACD:";

extern int FastEMA = 12;

extern int SlowEMA = 24;

int SignalEMA = 9;

extern int predel = 6;

extern string x1="????????? MA:";

extern int SMA1 = 50;

extern int SMA2 = 100;

extern int otstup = 10;

extern string x2="???????? ????? ??? ??????? ????-???? :";

extern int stoplossbars = 6;

extern string x3="??????????? ??? ??????? ?????? ?????? ? ???????? ???????? ???????:";

extern int pprofitum = 2;

extern string x4="?????? ?? ADX:";

extern int enable = 0;

extern int periodADX = 14;

extern double Lots=1;

datetime Bar;int buy,sell,i,a,b;double stoploss,setup2,adx,okbuy,oksell;

int start()

{

buy=0;sell=0;

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY){buy=1;}

if(OrderType()==OP_SELL){sell=1;}

}

//????????? ??????????

double macd =iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,1);

double sma1 =iMA(NULL,0,SMA1,0,MODE_SMA,PRICE_CLOSE,1);

double sma2 =iMA(NULL,0,SMA2,0,MODE_SMA,PRICE_CLOSE,1);

if(Close[1]<sma2){okbuy=1;}

if(Close[1]>sma2){oksell=1;}

if(enable==1)

{

adx=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,0);

}else{adx=60;}

if(Close[1]+otstup*Point>sma1 && Close[1]+otstup*Point>sma2 && macd>0 && buy==0)

{

buy=0;

for( i=predel;i>0;i--)

{

macd=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,i);

if(macd<0){buy=2;}

}

if(buy==2 && adx>50 && okbuy==1)

{okbuy=0;

double stoploss=Low;

OrderSend(Symbol(),OP_BUY,Lots,Ask,3,stoploss,0,0,16385,0,Green);

a=0;

}

}

if(Close[1]-otstup*Point<sma1 && Close[1]-otstup*Point<sma2 && macd<0 && sell==0)

{

sell=0;

for( i=predel;i>0;i--)

{

macd=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,PRICE_CLOSE,MODE_MAIN,i);

if(macd>0){sell=2;}

}

if(sell==2 && adx>50 && oksell==1)

{oksell=0;

stoploss=High;

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,stoploss,0,0,16385,0,White);

b=0;

}

}

if(buy==2 || buy==1)

{

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY )

{

double setup2=OrderOpenPrice()+((OrderOpenPrice()-OrderStopLoss())*pprofitum);

if(Close[1]>setup2 && a==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,White);

OrderClose(OrderTicket(),OrderLots()/2,Bid,3,Violet);

a=1;

}

if(a==1 && sma1> Close[1]-otstup*Point)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

}

}

}

}

if(sell==2 || sell==1)

{

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_SELL )

{

setup2=OrderOpenPrice()-((OrderStopLoss()-OrderOpenPrice())*pprofitum);

if(Close[1]<setup2 && b==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,White);

OrderClose(OrderTicket(),OrderLots()/2,Ask,3,Violet);

b=1;

}

if(b==1 && Close[1]-otstup*Point> sma1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

}

}

}

}

return(0);

}

como eu reverto as ordens de compra e venda... não consigo colocá-lo funcionando

 

Para apenas mudar inversamente OP_BUY com OP_SELL e a ação inversa na linha de código correta.

 
oneg:
tente isto:

if(Open[0] => Open[0+1] &&

Open[0+1] => Open[0+2] &&

Open[0+2]=> Open[0+3] &&

Open[0+3] => Open[0+4] &&

Open[0+4] => Open[0+5] &&

Open[0+5] => Open[0+6]) Order = SIGNAL_SELL

Isso não funcionou, mas colocar o sinal = após o sinal > funcionou. Assim:

if(Open[0] >= Open[0+1] &&

Aberto[0+1] >= Aberto[0+2] &&

Aberto[0+2]>= Aberto[0+3] &&

Aberto[0+3] >= Aberto[0+4] &&

Aberto[0+4] >= Aberto[0+5] &&

Aberto[0+5] >= Aberto[0+6]) Ordem = SIGNAL_SELL

 

Neste código, ele tem o trailing stop definido para 45 pips. Mas o batente móvel parece não se ativar até que ele se mova 45 pips. Como eu precisaria trocá-lo para que o batente móvel fosse ativado quando o comércio fosse colocado?

extern string Remark1 = "== Main Settings ==";

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = true;

extern double Lots = 4;

extern int Slippage = 2;

extern bool UseStopLoss = false;

extern int StopLoss = 100;

extern bool UseTakeProfit = false;

extern int TakeProfit = 15;

extern bool UseTrailingStop = true;

extern int TrailingStop = 45;

extern bool MoveStopOnce = False;

extern int MoveStopWhenPrice = 50;

extern int MoveStopTo = 1;

extern int MaxConcurrentTrades = 2;

//Version 2.01

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start()

{

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

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

//| Variable End |

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

//Check position

bool IsTrade = False;

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

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

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

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

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

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

 

sinais inversos de conselheiros especializados

pode alguém me ajudar no skype a mudar algum código em 1 Expert Advisor

posso encontrar uma muito boa . apenas uma pequena coisa tem que ser mudada

meu skype é : ctzulu

muito obrigado

Razão: