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
Vorrei aiutare con questa funzione di cui parli, ma sembra che non riesca semplicemente a capire la tua logica. Questo non ha davvero nulla a che fare con l'altra logica della strategia.
Vorrei semplicemente sapere questo.
Se hai 1 lotto di acquisto a 1.4110 e 2 lotti di vendita a 1.4200. A quale prezzo pensi di avere 6 pips di guadagno?Ciao Christina,
nella mia gestione delle posizioni mai, il 1 lotto di acquisto chiude con profitto, prima che 2 lotti di vendita sono aperti.(non vende mai perché 1 lotto di acquisto chiuso in profitto, aspettare il prossimo segnale)
ritorno al tuo esempio:
ma c'è una linea a circa 1.4175, dove 2 lotti di vendita (profitto su, mercato giù) e 1 lotto di acquisto (profitto giù, mercato giù) sono prezzo uguale (breakeven 0), quindi a 1.4169 6 pips profitto sono pronti - poi vorrei chiudere tutti gli ordini
IX
Ciao Christina,
nella mia gestione delle posizioni mai, il 1 lotto di acquisto chiude con profitto, prima che 2 lotti di vendita siano aperti.(non vende mai perché il 1 lotto di acquisto ha chiuso in profitto, aspetta il prossimo segnale)
ritorno al tuo esempio:
ma c'è una linea a circa 1.4175, dove 2 lotti di vendita (profitto su, mercato giù) e 1 lotto di acquisto (profitto giù, mercato giù) sono prezzo uguale (breakeven 0), quindi a 1.4169 6 pips di profitto sono pronti - poi vorrei chiudere tutti gli ordini
IXPerché il mio esempio è 1,4110 e 1,4200. Ecco il mio calcolo:
Prima di tutto, a 1.4170 (senza considerare gli spread) siamo in pareggio. Ora abbiamo 2 lotti di vendita in guadagno a 30 pips ciascuno e 1 lotto di acquisto in perdita di 60 pips, quindi break even in termini di dollari.
Se esattamente con il mio esempio, dovresti avere 6 pip di guadagno complessivo a 1.4164.
A 1.4164 (senza considerare gli spreads) abbiamo 2 lotti di vendita con un guadagno di 36 pips ciascuno e 1 lotto di acquisto con una perdita di 54 pips, quindi un guadagno di 72 pips dalle vendite e una perdita di 54 pips dagli acquisti. Complessivamente per il gruppo di trade, hai 3 lotti con un guadagno di 18 pip. Quindi è più ragionevole considerare che ora hai un guadagno di 6 pip.
Tuttavia le cose saranno di nuovo complicate a causa degli spread. Perché se il bid è 1.4164, l'ask forse 1.4166, quindi le tue vendite hanno solo 34 pip di guadagno ciascuna. Complessivamente per il gruppo di trade, hai 3 lotti con un guadagno di 14 pip. Quindi ora di fatto hai 4.7 pip di guadagno.
Se porto questo esempio un passo avanti, se abbiamo 2 buy e 3 sell. Allora a 1.4164 sei in pareggio.
Se non dobbiamo considerare gli spreads, allora abbiamo bisogno di 30 pips di guadagno totale per avere 5 pips di guadagno su ogni lotto. Quindi il guadagno di 6 pip sarebbe al prezzo di 1.4134, è corretto?
Il tuo sistema probabilmente non avrà questo tipo di situazione, è il principio che voglio ottenere. Sei d'accordo con il calcolo di cui sopra?
Perché il mio esempio è 1.4110 e 1.4200. Ecco il mio calcolo:
Prima di tutto, a 1.4170 (senza considerare gli spread) siamo in pareggio. Ora abbiamo 2 lotti di vendita in guadagno a 30 pips ciascuno e 1 lotto di acquisto in perdita di 60 pips, quindi break even in termini di dollari.
Se esattamente con il mio esempio, dovresti avere 6 pip di guadagno complessivo a 1.4164.
A 1.4164 (senza considerare gli spreads) abbiamo 2 lotti di vendita con un guadagno di 36 pips ciascuno e 1 lotto di acquisto con una perdita di 54 pips, quindi un guadagno di 72 pips dalle vendite e una perdita di 54 pips dagli acquisti. Complessivamente per il gruppo di trade, hai 3 lotti con un guadagno di 18 pip. Quindi è più ragionevole considerare che ora hai un guadagno di 6 pip.
Tuttavia le cose saranno di nuovo complicate a causa degli spread. Perché se il bid è 1.4164, l'ask forse 1.4166, quindi le tue vendite hanno solo 34 pip di guadagno ciascuna. Complessivamente per il gruppo di trade, hai 3 lotti con un guadagno di 14 pip. Quindi ora di fatto hai 4.7 pip di guadagno.
Se porto questo esempio un passo avanti, se abbiamo 2 buy e 3 sell. Allora a 1.4164 sei in pareggio.
Se non dobbiamo considerare gli spreads, allora abbiamo bisogno di 30 pips di guadagno totale per avere 5 pips di guadagno su ogni lotto. Quindi il guadagno di 6 pip sarebbe al prezzo di 1.4134, è corretto?
Il vostro sistema probabilmente non avrà questo tipo di situazione, è il principio che voglio ottenere. Sei d'accordo con il calcolo di cui sopra?Christina,
sono d'accordo, hai ragione al 100% con entrambi i calcoli!
Ciao, Michael,
Sono troppo occupato negli ultimi due giorni, ho già fatto questo ma ha bisogno di più tempo per metterlo insieme. Lo posterò qui una volta che avrò trovato un po' di tempo per farlo nei prossimi giorni. Chrisitna
Ciao, Michael, sono troppo occupato negli ultimi due giorni, ho già fatto questo ma ha bisogno di più tempo per metterlo insieme. Lo posterò qui una volta che avrò trovato un po' di tempo per farlo nei prossimi giorni. Chrisitna
Ciao Christina,
nessun problema, prenditi il tuo tempo, apprezzo sempre i tuoi suggerimenti!
Michael
ho bisogno di aiuto
Ciao a tutti!
Questa è la mia idea: ho bisogno di 2 buffer di indicatori in separate_window, 1 è devupBuffer[]; 2 è devdwBuffer[]. Per esempio se hanno cinque digitali 1,2,3,4,5 che media è3.Allora i dati sono maggiori della media di 3 4 e 5 devupBuffer={【(4-media)*(4-media)】+【(5-media)*(5-media)】}/deviazione standard(1,2,3,4,5)*deviazione standard(1,2,3,4,5).I dati sono inferiori alla media di 3 1 e 2 devdwBuffer={【(1-media)*(1-media)】+【(2-media)*(2-media)】}/deviazione standard(1,2,3,4,5)*deviazione standard(1,2,3,4,5).
perché questo EA non può comprare o vendere?
Ciao, sono davvero nuovo in questa programmazione con Meta... per favore aiutatemi...
Sto lavorando con un sistema su Stocastico con due livelli, 25 e 75...
Un solo trade...
se il MAIN e il SIGNAL sono entrambi sotto il 25 e si incrociano, COMPRO.
se il MAIN e il SIGNAL si incrociano sopra il 25, CHIUDI ACQUISTO.
se il MAIN e il SIGNAL sono entrambi sopra 75 e si incrociano, VENDERE.
se il MAIN e il SIGNAL si incrociano (non è necessario che siano sotto 75), CHIUDI VENDITA.
questo è tutto...
//| StochCross.mq4 |
//| RobertEli |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "RobertEli"
#property link "http://www.metaquotes.net"
//--- input parameters
extern double TakeProfit=250.0;
extern double Lots=0.01;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Confirm (double line1, double line2, int level_buy, int level_sell)
{
static int confirmation = 0;
if ((line1 < level_buy) && (line2 < level_buy)) confirmation = 1; //confirm BUY, when two lines are below level_buy
if ((line1 > level_sell) && (line2 > level_sell)) confirmation = 2; //confirm SELL, when two lines are above level_sell
if ((line1 > level_buy) && (line2 > level_buy)) confirmation = 3; //confirm CLOSE BUY, when two lines are above level_buy
if ((line1 < level_sell) && (line2 < level_sell)) confirmation = 4; //confirm CLOSE SELL, when two lines are below level_sell
//if ((line1 > level_buy_close) && (line2 > level_buy_close)) confirmation = 3; //confirm CLOSE BUY
//if ((line1 < level_sell_close) && (line2 < level_sell_close)) confirmation = 4; //confirm CLOSE SELL
//else return (0);
return (confirmation);
}
int Crossed (double line1, double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if (line1 > line2) current_direction = 1; //UP
if (line1 < line2) current_direction = 2; //DOWN
if (current_direction != last_direction) //changed direction
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket;
double Stoch_main, Stoch_sign;
if (Bars < 100)
{
Print("BARS less than 100");
return (0);
}
if (TakeProfit < 10)
{
Print("TakeProfit less than 10");
return (0);
}
/*
Stoch_main = iStochastic (NULL,15,21,8,13,MODE_SMA,1,MODE_MAIN,0);
Stoch_sign = iStochastic (NULL,15,21,8,13,MODE_SMA,1,MODE_SIGNAL,0);
*/
Stoch_main = iStochastic (NULL,0,30,20,12,MODE_SMA,1,MODE_MAIN,0);
Stoch_sign = iStochastic (NULL,0,30,20,12,MODE_SMA,1,MODE_SIGNAL,0);
/*
Stoch_main = iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
Stoch_sign = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
*/
int isCrossed = Crossed(Stoch_main,Stoch_sign);
int isConfirmed = Confirm(Stoch_main,Stoch_sign,25,75);
int total = OrdersTotal();
if (total == 0)
{
if ((isCrossed == 1) && (isConfirmed == 1))
{
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"Buy at " + Ask,24848,0,Green);
if (ticket > 0)
{
if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY Order opened: " +Ask ,OrderOpenPrice());
else Print ("Error Opening BUY Order: ", GetLastError());
return (0);
}
}
if ((isCrossed == 2) && (isConfirmed == 2))
{
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"Sell at " + Bid,24848,0,Red);
if (ticket > 0)
{
if (OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL Order opened: " +Bid ,OrderOpenPrice());
else Print ("Error Opening SELL Order: ", GetLastError());
return (0);
}
}
return (0);
}
else
{
for (cnt = total; cnt < 0; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderType() <= OP_SELL && OrderSymbol() == Symbol())
{
if (OrderType() == OP_BUY) //the trade was a Buy position
{ //check for closing)
if ((isCrossed == 2) && (isConfirmed == 3))
//if (isCrossed == 2)
{ //change of direction
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //close Buy position
return (0);
}
}
else // the trade was a SELL position
{
//should it be closed?
//if ((isCrossed == 1) && (isConfirmed == 4))
if (isCrossed == 1) //Closing the SELL need not to be below the level_buy... it's very dangerous to wait for it...
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //Sell position is now closed
return (0);
}
}
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+EA non riesce a fare quello che dovrebbe fare, AIUTO!
ciao, sono davvero nuovo in questa programmazione di mq4 ma ho letto i tutorial di codersgurus (grazie mille!) quindi penso di poter capire qualcosa... Comunque, ho fatto questo EA che si basa su MOVING AVERAGES... MA NON FUNZIONA TERRIBILMENTE COME DOVREBBE!
le regole qui sono molto semplici...
1. 1. MA_04_1H (significa media mobile periodo 4 per timeframe 1 ora) incrocia sopra MA_14_1H,
confermalo con MA_04_4H che è sopra MA_14_4H (la tendenza è al rialzo) ------> COMPRA!
2. MA_04_1H incrocia sotto MA_14_1H,
confermalo con MA_04_4H sotto MA_14_4H (la tendenza è al ribasso) ------> VENDI!
3. quando MA_04_1H incrocia il MA_14_1H, chiudi quell'ordine (può iniziare un nuovo ordine date le regole #1 e #2)
4. un solo trade... (se COMPRARE, chiudere quel COMPRARE. dopo di che, VENDERE se necessario)
Ho creato 2 funzioni: Incrociato e Confermato.
Incrociata è per il timeframe di 1 ora.
Confirmed è per il timeframe a 4 ore.
qualcuno può aiutarmi a fare il debug di questa cosa?
//| MACross1TradeOnly.mq4 |
//| RobertEli |
//| |
//+------------------------------------------------------------------+
// this will work on MA_04, and MA__14
#property copyright "RobertEli"
#property link ""
extern double Lots = 0.01;
extern int stoploss_value = 10; // $10
bool up = 0, //UP direction, when MA_04 is above MA_14
down = 0, //DOWN direction, when MA_14 is above MA_04
change = 0, //when the MA_04 and MA_14 cross
firsttime = true; //first time for direction_prev
int direction_curr = 0; // 1 if UP, 2 if down...
int direction_prev = 0; // this will hold previous value of direction_curr
int direction_trend= 0; // trend direction for confirmation
int cross = 0; // if direction_curr and direction_prev changes course
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1, double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if (line1 - line2 > 0)//(line1 > line2)
{
current_direction = 1; //UP
if (firsttime == true)
{
current_direction = 0;
last_direction = 1;
firsttime = false;
return (0);
}
}
if (line1 - line2 < 0)//(line1 < line2)
{
current_direction = 2; //DOWN
if (firsttime == true)
{
current_direction = 0;
last_direction = 2;
firsttime = false;
return (0);
}
}
if ((current_direction != last_direction) && (firsttime == false)) //changed direction
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (last_direction);
}
}
int Confirmed (double line1, double line2)
{
int trend;
if (line1 > line2) trend = 1; // trend direction is UP
if (line1 < line2) trend = 2; // trend direction is DOWN
return (trend);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt,ticket, total;
//double MA_04, MA_07 , MA_14 , MA_21 , MA_28; //MOVING AVERAGES with their corresponding period
if (Bars < 100) { Print ("Bars less than 100."); return (0); }
double MA_04_1H = iMA(NULL,60,04,0,MODE_EMA,PRICE_CLOSE,0);
double MA_14_1H = iMA(NULL,60,14,0,MODE_EMA,PRICE_CLOSE,0);
double MA_04_4H = iMA(NULL,240,04,0,MODE_EMA,PRICE_CLOSE,0);
double MA_14_4H = iMA(NULL,240,14,0,MODE_EMA,PRICE_CLOSE,0);
//double stoploss = stoploss_value / (Lots * 100000);
//new code from v_1
cross = Crossed (MA_04_1H,MA_14_1H); // =1 for UP, =2 for DOWN
direction_trend = Confirmed (MA_04_4H, MA_14_4H); // =1 for UP, =2 for DOWN
total = OrdersTotal();
if (total == 0)
{
if((cross == 1) && (direction_trend == 1))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,/*Ask-stoploss*/0,0,"Buy at: "+ Ask,12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice(),",<<<<",OrderStopLoss());
}
else Print("Error opening BUY order : ",GetLastError());
cross = 0;
return(0);
}
if((cross == 2) && (direction_trend == 2))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,/*Bid+stoploss*/0,0,"Sell at: "+ Bid,12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
cross = 0;
return(0);
}
}
if (total == 1)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
// bool no_buy_sell = ((OrderTakeProfit() 0));
if ((OrderType()==OP_BUY) && (cross == 2) )// && (no_buy_sell))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
//OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+stoploss,0,"Sell at: "+ Bid,12345,0,Red);
return (0);
}
else if ((OrderType()==OP_SELL) && (cross == 1) )// && (no_buy_sell))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
//OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-stoploss,0,"Buy at: "+ Ask,12345,0,Green);
return (0);
}
}
}
else return (0);
//----
return(0);
}
//+------------------------------------------------------------------+per favore ignorate il mio post precedente... ho cestinato quell'idea... sto lavorando su questo ora... quindi per favore aiutatemi...