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

 
woin2110:

se ((hi-low)<=max_koridor_v_punktah)
{
int buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//aprire ordine Buy.

se (comprare>0)
{
Alert ("L'ordine BuyStop è stato impostato ",buy);
}
int sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//aprire ordine Sell.
se (vendere>0)
{
Alert ("SellStop order set ",sell);
}
if (DayOfWeek()==5 && Hour()==22) //cancella gli ordini pendenti e aperti il venerdì alle 23:00 ora del server
{
se (OrderSelect(sell,SELECT_BY_TICKET)==true)
{
OrderClose(sell,OrderLots(),Bid,3,Green);//(Ticket,lot,Close price, slippage in pips, colore della freccia di chiusura sul grafico) { Chiudi l'ordine di mercato per vendere.
OrderDelete(sell);//chiude il limite di vendita.
}
se (OrderSelect(buy,SELECT_BY_TICKET)==true)
{
OrderClose(buy,OrderLots(),Ask,3,Red);//(Ticket,lot,close price,slippage in punti,colore della freccia di chiusura sul grafico)/close market order to buy.
OrderDelete(buy);//chiude il limite di acquisto.
ritorno(0);
}
}
}

Chi può dirmi perché non chiude gli ordini e non cancella i limiti?


Chiudi l'ordine di acquisto al prezzo Bid, vendi al prezzo Ask.
 
isn-88:

Chiudi l'ordine di acquisto al prezzo Bid, vendi al prezzo Ask.
grazie
 
AlexeyVik:
Semplice condizione nella funzione init
Metalli, scorte e materie prime non contano.

Grazie. Potete dirmi il modo più semplice. Ho bisogno di capire se ci sono posizioni aperte su questa coppia o no. Se ci sono ordini di vendita e se ci sono ordini di acquisto. Significa che dobbiamo ottenere

0 - se non ci sono ordini aperti

1-Ho ordini di vendita ma nessun ordine di acquisto.

2-ci sono ordini di acquisto ma nessun ordine di vendita

3-ci sono entrambi...

 
woin2110:

https://docs.mql4.com/ru/series

if(DayOfWeek()==1,2..... && Ora()==1,2....)
{
double hi=iHigh(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define high
double low=iLow(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//definire low.

/////////////////////////////////////////////////////////////////////////////////////////////////

double op=iOpen(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//definire apertura.


Grazie!
 
Zolotai:

Grazie. Potete dirmi il modo più semplice. Ho bisogno di capire se ci sono posizioni aperte su questa coppia o no. Se ci sono ordini di vendita e se ci sono ordini di acquisto. Significa che dobbiamo ottenere

0 - se non ci sono ordini aperti

1-Ho ordini di vendita ma nessun ordine di acquisto.

2-ci sono ordini di acquisto ma nessun ordine di vendita

3-ci sono entrambi.

Per esempio così:

int i_buy=0;

int i_sell=0;

//--- получим количество открытых и отложенных ордеров

int total=OrdersTotal();

for(int i=0;i<total;i++)

{

//--- выберем i-й ордер из списка торговли

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{

//--- если ордер открыт по текущему финансовому инструменту

if(OrderSymbol()==Symbol())

{

switch(OrderType())

{

//--- Бай ордер

case OP_BUY:

i_buy++;

break;

//--- Селл ордер

case OP_SELL:

i_sell++;

break;

case OP_BUYSTOP:

case OP_BUYLIMIT:

case OP_SELLSTOP:

case OP_SELLLIMIT:

//--- пробойники, лимитники

break;

}

}

}

}


if(i_buy==0 && i_sell==0)

{

//--- нет открытых ордеров

}

if(i_buy>0 && i_sell==0)

{

//--- открыты баи

}

if(i_buy==0 && i_sell>0)

{

//--- открыты селы

}

if(i_buy>0 && i_sell>0)

{

//--- открыты и баи и селы

}

 
isn-88:

Per esempio, così:



Grazie mille. La mia comprensione è che l'asc è il prezzo attuale. Apro un ordine quando non ci sono ordini aperti. Il ciclo va dal primo all'ultimo ordine aperto? Come posso trasmettere in una variabile il lotto dell'ultimo ordine aperto e il suo prezzo?
 
Zolotai:

Grazie mille. La mia comprensione è che l'asc è il prezzo attuale. Apro un ordine quando non ci sono ordini aperti. Il ciclo va dal primo all'ultimo ordine aperto? Come posso impostare il lotto dell'ultimo ordine aperto e il suo prezzo in una variabile?

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

doppio z; //dichiarare una variabile "z".
double y; //dichiarare la variabile "y"


if(OrderSelect(10,SELECT_BY_POS)==true) //se l'ordine (per biglietto) è già selezionato

{

OrderLots()=z //assegnare il lotto di questo ordine alla variabile "z

OrderOpenPrice()=y //assegnare il prezzo aperto alla variabile "y

}

prova questo

 
woin2110:

https://docs.mql4.com/ru/trading/orderselecthttps://docs.mql4.com/ru/trading/orderopenprice https://docs.mql4.com/ru/trading/orderlots

double z; //dichiarare la variabile "z"
double y; //dichiarare la variabile "y"


if(OrderSelect(10,SELECT_BY_POS)==true) //se l'ordine (per biglietto) è già selezionato

{

OrderLots()=z //assegnare il lotto di questo ordine alla variabile "z

OrderOpenPrice()=y //assegnare il prezzo aperto alla variabile "y

}

prova questo

y = OrderOpenPrice();


Oops, ho capito, ma non capisco. if((i_buy==0 && i_sell==0) || y > Step). Dovrebbe aprire un altro ordine se la distanza dall'ultimo ordine aperto è più di 5 pip. Ma non funziona, domanda.

for(int i=0;i<totale;i++) Va dal primo ordine aperto all'ultimo? Cioè, alla fine dovrei ottenere il prezzo dell'ultimo ordine aperto.

 
Zolotai:

y = OrderOpenPrice();


Non capisco if((i_buy==0 && i_sell==0) || y > Step). Dovrebbe aprire un altro ordine se la distanza dall'ultimo ordine aperto è più di 5 pip. Ma non funziona, domanda.

for(int i=0;i<totale;i++) Va dal primo ordine aperto all'ultimo? In altreparole, dovrei ottenere il prezzo dell'ultimo ordine aperto.


Non lo so, non l'ho mai incontrato.
 

Salve. Ho visto un post su https://forum.mql4.com/ru/51490/page2 dove c'è uno script che apre la finestra delle impostazioni EA:

Questo porta alla finestra delle impostazioni EA:

//+------------------------------------------------------------------+
//|                                                      EaSetup.mq4 |
//+------------------------------------------------------------------+
//|                                                      EaStart.mq4 |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, XrustSolution."
#property link      "mail: xrustx@gmail.com"
#import "user32.dll"
   int   RegisterWindowMessageA(string lpstring);
   int   PostMessageA(int  hWnd,int  Msg,int  wParam,string lParam);
#import
#define WM_COMMAND      0x0111
//+------------------------------------------------------------------+
void start(){Sleep(200);PostMessageA(WindowHandle(Symbol(),Period()), WM_COMMAND, 33048, 0);return;}
//+------------------------------------------------------------------+ 

È possibile fare in modo che lo script apra la finestra delle impostazioni EA a intervalli di 1 secondo e confermi immediatamente (premere il pulsante ok) e così via?