Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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:
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 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.
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