[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 87

 
Mathemat:

Mi dispiace, ma è sicuramente negli Annali. L'ignoranza della lingua inglese non è una scusa.

Non so quale sia lo spread EURUSD sul micro, onestamente. Probabilmente sei bandito da questo forum. Questi bastardi pensano sempre a qualcosa per tenerti fuori.

Sono riuscito a registrarmi, grazie.
 

Salve, per favore aiutatemi con un punto, credo elementare.

int start()
{
OrderSend(Symbol(),OP_BUY,1,Ask,2,0,0);
Alert(GetLastError());
return;
}

Lo script apre un ordine a mercato e tutto va bene. Ma se imposto qualsiasi valore di SL o TP, ottengo l'errore "Wrong Stop".

int start()
{
OrderSend(Symbol(),OP_BUY,1,Ask,2,Bid-50*Point,Bid+50*Point);
Alert(GetLastError());
return;
}

Questo codice non funziona più. Cosa c'è che non va? Non riesco a capirlo...

int start()
{
OrderSend(Symbol(),OP_BUY,1,Ask,2,1.31845,1.40000);
Alert(GetLastError());
return;
}

E non funziona anche se inserisco valori numerici di stop e profitto. La distanza minima dall'ordine allo stop è ok.

 

Cari professionisti! Ho una domanda. Ho un EA, che fa trading con diversi criteri, come fargli modificare gli ordini separatamente? per esempio, ho aperto due ordini BUY con diversi segnali, un livello di breakeven è 90pp con incrementi di 40pp, un altro è 50pp con incrementi di 50pp. Avendo già provato, ho visto quanti segnali ho ricevuto, e non so come usarli. Molte grazie in anticipo!

 
azik1306:

Cari professionisti! Ho una domanda. Ho un EA, che fa trading con diversi criteri, come fargli modificare gli ordini separatamente? per esempio, ho aperto due ordini BUY con diversi segnali, un livello di breakeven è 90pp con incrementi di 40pp, un altro è 50pp con incrementi di 50pp. Avendo già provato, ho visto quanti segnali ho ricevuto, e non so come usarli. L'ho già provato e non ho idea di come usarlo.

-È possibile aprire trade da diversi segnali con diversi numeri di Magic.

-È possibile mettere dei "segni" (ad esempio, lo stesso livello di trawl) nel campo dei commenti quando si aprono le compravendite e poi analizzarlo

senza vedere il codice della tua domanda, non capisco esattamente cosa vuoi fare separatamente

 

il codice è approssimativamente il seguente:

for( int c=1; c<=OrdersTotal(); c++) // Order loop
{
OrderSelect(c-1,SELECT_BY_POS); // Se c'è un altro
// Analisi degli ordini:
if(OrderMagicNumber()<1000)

if (R==1 && SL<OrderOpenPrice() && Bid-OrderOpenPrice()>((NoLoss)*Point) )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*(NoLoss),OrderTakeProfit(),0,Blue);
return;
}
se (R==2 && SL>OrderOpenPrice() && OrderOpenPrice()-Ask>((NoLoss)*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*(NoLoss),OrderTakeProfit(),0,Blue);
return;
}
if (R==1 && SL>=OrderOpenPrice() && Bid - SL > ((NoLoss*Point)+(StepLoss*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss,OrderTakeProfit(),0,Blue);
return;
}
se (R==2 && SL<=OrderOpenPrice() && SL-Ask>((NoLoss*Point)+(StepLoss*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*NoLoss,OrderTakeProfit(),0,Blue);
return;
}
return;
}
//--------------------------------------------------------------------

for(c=1; c<=OrdersTotal(); c++) // Order loop
{
OrderSelect(c-1,SELECT_BY_POS); // Se c'è un altro
// Analisi degli ordini:
if (OrderMagicNumber()>1000)
if (Z==3 && Bid-OrderOpenPrice()>((NoLoss1)*Point) )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss1,OrderTakeProfit(),0,Blue);
return;
}
if (Z==4 && SL1>OrderOpenPrice() && OrderOpenPrice()-Ask>NoLoss1*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*NoLoss1,OrderTakeProfit(),0,Blue);
return;
}
if (Z==3 && SL1>=OrderOpenPrice() && Bid - SL1 > ((NoLoss1*Point)+(StepLoss1*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss1,OrderTakeProfit(),0,Blue);
return;
}
if (Z==4 && SL1<=OrderOpenPrice() && SL1-Ask>((NoLoss1*Point)+(StepLoss1*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*NoLoss1,OrderTakeProfit(),0,Blue);
return;
}
return;
}

//--------------------------------------------------------------------
// Valori degli ordini
RefreshRates(); // Aggiorna i dati
Min_Lot=MarketInfo(Symb,MODE_MINLOT); // Min. lots
Free =AccountFreeMargin(); // Fondi liberi
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Valore di 1 lot
Step =MarketInfo(Symb,MODE_LOTSTEP); // Dimensione del cambio di step

if (Lots > 0) // Se i lot sono impostati, allora
Lts =Lots; // lavora con loro
else // % fondi liberi
Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;// Per aprire

if(Lts < Min_Lot) Lts=Min_Lot; // Non meno del minimo
if(Lts*One_Lot > Free) // Lotti più cari di free.
{
Alert(" Not enough money ", Lts," Lots");
return; // Exit start()
}
//--------------------------------------------------------------- 8 --
// Ordini di apertura

{
if (Total<2 && Opn_B==true && B==false)
{
// criterio per aprire un ordine Buy. Buy
RefreshRates(); // Aggiorna i dati
SL=Bid - New_Stop(StopLoss)*Point; // Calcolo del SL aperto.
TP=Bid + New_Stop(TakeProfit)*Point; // Calcolo del TP aperto.
Alert("Attempting to open Buy. Waiting for reply...");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP,NULL,y);//Open Buy
if (Ticket > 0) // It worked :)
{
Alert ("Opened Buy order ",Ticket);
B=true;
S=false;
Y=OrderMagicNumber();
R=1;
return; // Exit start()
}
if (Fun_Error(GetLastError())==1) // Error handling
continue; // Riprova
// Esci start()
}
if (Total<2 && Opn_S==true && S==false) // Apri gli ordini. none +
{
Sleep(10000); // open Sell crit. Sell
RefreshRates(); // Aggiorna i dati
SL=Ask + New_Stop(StopLoss)*Point; // Calcolo di SL aperto.
TP=Ask - New_Stop(TakeProfit)*Point; // Calcolo di TP aperto.
Alert("Attempting to open Sell. Waiting for reply...");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP,NULL,y);//Open Sel
if (Ticket > 0) // It worked :)
{
Alert ("Sell order opened ",Ticket);
S=true;
B=false;
Y=OrderMagicNumber();
R=2;
return; // Exit start()
}
if (Fun_Error(GetLastError())==1) // Error handling
continue; // Riprova
// Esci start()
}

if (Total<2 && Opn_B1==true && B1==false)
{
RefreshRates(); // Aggiorna i dati
SL1=Bid - New_Stop1(StopLoss1)*Point; // Calcola SL aperto
TP1=Bid + New_Stop1(TakeProfit1)*Point; // Calcolo del TP aperto.
Alert("Attempting to open Buy. Waiting for reply...");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL1,TP1,NULL,x);//Open Buy
if (Ticket > 0) // It worked :)
{
Alert ("Opened Buy order ",Ticket);
B1=true;
S1=false;
X=OrderMagicNumber();
Z=3;
return; // Exit start()
}
if (Fun_Error(GetLastError())==1) // Error handling
continue; // Riprova
// Esci start()
}
if (Total<2 && Opn_S1==true && S1==false) // Apri gli ordini. none +
{
Sleep(10000); // open Sell crit. Sell
RefreshRates(); // Aggiorna i dati
SL1=Ask + New_Stop1(StopLoss1)*Point; // Calcolo di SL aperto.
TP1=Ask - New_Stop1(TakeProfit1)*Point; // Calcolo di TP aperto.
Alert("Attempting to open Sell. Waiting for reply...");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL1,TP1,NULL,x);//Open Sel
if (Ticket > 0) // It worked :)
{
Alert ("Sell order open ",Ticket);
S1=true;
B1=false;
X=OrderMagicNumber();
Z=4;
return; // Exit start()
}
if (Fun_Error(GetLastError())==1) // Error handling
continue; // Retry
// Exit start()
}
break; // Exit while
}

 
Provato sia orderselect che majik, EA confonde gli ordini
 
azik1306:

il codice è qualcosa come questo:


Allegate codici così ampi con un file, o almeno con SRC (selezionabile nella barra superiore di editing), perché è faticoso leggere tali righe.
 
azik1306:

il codice è approssimativamente il seguente:

for( int c=1; c<=OrdersTotal(); c++) // ciclo degli ordini
{
OrderSelect(c-1,SELECT_BY_POS); // Se c'è un prossimo
// Analisi degli ordini:
se(OrderMagicNumber()<1000)
if(R==1 && SL<OrderOpenPrice() && Bid-OrderOpenPrice()>((NoLoss)*Point) )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*(NoLoss),OrderTakeProfit(),0,Blue);
ritorno;
}
se (R==2 && SL>OrderOpenPrice() && OrderOpenPrice()-Ask>((NoLoss)*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*(NoLoss),OrderTakeProfit(),0,Blue);
ritorno;
}
if (R==1 && SL>=OrderOpenPrice() && Bid - SL > ((NoLoss*Point)+(StepLoss*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss,OrderTakeProfit(),0,Blue);
ritorno;
}
se (R==2 && SL<=OrderOpenPrice() && SL-Ask>((NoLoss*Point)+(StepLoss*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*NoLoss,OrderTakeProfit(),0,Blue);
ritorno;
}
ritorno;
}
//--------------------------------------------------------------------
// In linea di principio, non c'è bisogno di scrivere altro: non verrà eseguito comunque

for(c=1; c<=OrdersTotal(); c++) // ciclo degli ordini

{
OrderSelect(c-1,SELECT_BY_POS); // Se c'è un prossimo
// Analisi degli ordini:
se (OrderMagicNumber()>1000)
se (Z==3 && Bid-OrderOpenPrice()>((NoLoss1)*Point) )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss1,OrderTakeProfit(),0,Blue);
ritorno;
}

if (Z==4 && SL1>OrderOpenPrice() && OrderOpenPrice()-Ask>NoLoss1*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*NoLoss1,OrderTakeProfit(),0,Blue);
ritorno;
}
if (Z==3 && SL1>=OrderOpenPrice() && Bid - SL1 > ((NoLoss1*Point)+(StepLoss1*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss1,OrderTakeProfit(),0,Blue);
ritorno;
}
if (Z==4 && SL1<=OrderOpenPrice() && SL1-Ask>((NoLoss1*Point)+(StepLoss1*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*NoLoss1,OrderTakeProfit(),0,Blue);
ritorno;
}
ritorno ; // Ma "per essere sicuri", c'è anche un "colpo di prova" ;)
}

........ Nient'altro conta .......

//

//--------------------------------------------------------------------
// Valore dell'ordine

 
Grazie, lo proverò ora.
 
Corretto il codice, ma l'EA non vuole avvicinarsi ad ogni ordine individualmente