Come codificare? - pagina 109

 

Gestire scambi multipli

Ciao a tutti,

Sto cercando di sviluppare un EA che possa teoricamente inserire una quantità infinita di trade, e gestire per ogni trade il:

  1. Trailing Stop
  2. Spostamento a BE
  3. ATR-Trailing Stop
  4. ecc

So che EAs come swiss army e manageTP possono fare questo. Non so come.

Qualche suggerimento?

 

ho bisogno di aiuto per scrivere codice per fermare il trading dopo una perdita

Salve,

Ho bisogno di scrivere codice in modo che un esperto fermi il trading per un numero specifico di ore dopo una perdita o dopo due o tre perdite consecutive.

Qualcuno può aiutarmi?

 

Codifica per Martinggle con copertura chiusa

Ciao Team,

vorrei cercare un codice che possa fornirmi la soluzione della mia stategia qui sotto;

esempi;

concetto martingle-

TP = 23 pip

Pip gap = 20

OP compra EU 0.1,0.2,0.4,0.8,1.6 lotto

1. se il livello sul lotto 1,6 galleggia più di -20pips allora OP vende EU con 12.8lot (tp 23).

2. se il livello 12.8 lotto ha colpito il TP chiudi tutte le posizioni EU.

3. se 12.8 lotto pip=0 allora chiudi la posizione solo su Sell EU.

4. ripetere la situazione 1 fino a 3 di nuovo se la condizione si applica.

Ho bisogno del vostro favore per consigliarmi sulla funzione e sui codici.

 

domanda di codifica

In questo momento questo codice funziona controllando se l'apertura corrente è superiore alla barra precedente. La mia domanda è come potrei cambiarlo se volessi che vedesse se è più alto O UGUALE alla barra precedente?

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

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

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

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

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

Apertura[0+5] > Apertura[0+6]) Ordine = SIGNAL_SELL

Potrei semplicemente aggiungere un = accanto al segno maggiore di, come questo = >?

Grazie!

 

prova questo:

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

 

segnali inversi di expert advisor

ciao

sto giocando con questo expert advisor

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

}

come faccio a invertire gli ordini di acquisto e di vendita... non riesco a farlo funzionare

 

Per invertire solo OP_BUY con OP_SELL e l'azione inversa nella codeline giusta.

 
oneg:
prova questo:

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

Questo non ha funzionato, ma mettere il segno = dopo il segno > ha funzionato. In questo modo:

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

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

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

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

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

Apertura[0+5] >= Apertura[0+6]) Ordine = SEGNALE_VENDITA

 

In questo codice, ha il trailing stop impostato per 45 pip. Ma il trailing stop non sembra attivarsi finché non si muove di 45 pip. Come dovrei cambiarlo per avere il trailing stop attivato quando il trade è piazzato?

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;

}

}

}

}

}

}

 

invertire i segnali del consulente esperto

qualcuno può aiutarmi in skype a cambiare qualche codice in 1 Expert Advisor

Ho trovato uno molto buono. solo una piccola cosa deve essere cambiata

il mio skype è: ctzulu

grazie mille

Motivazione: