[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 439

 
peshihod:


Capisco che un ordine pendente e un ordine aperto sono ordini diversi. E se l'ordine pendente viene aperto, allora il compito si riduce a quello iniziale, all'ordine aperto. Se ho capito bene, sta diventando molto complicato.

Quali sono i compiti? Forse, tutto può essere fatto in modo più semplice?

Capisco che un ordine pendente e un ordine aperto sono ordini diversi. -------------- Sì (forse) Forse no. La cosa principale è che lo script dovrebbe scattare all'apertura di questo ordine pendente, cioè non quando viene piazzato ma quando viene aperto.

Ho bisogno di aiuto per scrivere lo script, per favore aiutatemi, professionisti, esperti e brave persone, suggerite i cambiamenti se volete che funzioni.


Se ho un ordine pendente, il suo prezzo lo raggiunge e anche il robot dovrebbe reagire. Voglio che funzioni anche per questi ordini.

Bene, lo sto testando ora e funziona. Perché non ha funzionato nel 1° test hmmm... Forse a causa del riavvio del computer...Ma dopo il riavvio pianificato, il robot ha sorriso (ha funzionato).

Un altro dettaglio. Questo script non funziona sui grafici storici, e perché?

//+------------------------------------------------------------------+
//| Order_act.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
int Order_array[200];
int Total=0;
int j,pos,count,order_tick,type;
bool found;

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
// создаем список ордеров (туда входят и открытые, и отложенные)
Total=OrdersTotal();

for(pos=0;pos<Total;pos++)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{ Order_array[pos]=OrderTicket();}
}

// проверочная часть скрипта
int i=0;
while ( !IsStopped() )
{
count=OrdersTotal();
for(pos=0;pos<count;pos++)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{
found=false;
order_tick=OrderTicket();

for (j=0;j<Total;j++)
{

if (order_tick==Order_array[j]) {found=true;}
}
if (!found)
{
type=OrderType();

if ((type==OP_BUY) || (type==OP_SELL))
{
Total++; // в случае,если есть новый открытый
Order_array[Total-1]=order_tick; //ордер - добавляем в список

Alert("Новый открытый ордер"); // и делаем с ним что хотим

}
}
}
// если планируется, что скрипт будет работать долго или открываемся часто
// удаляем из списка все закрытые ордера чтобы не было переполнения.
// А чтобы работало быстрее, количество записей можно уменьшить (лишь бы не превысило
// максимально возможного числа открытых и отложенных поз.
if (Total>190)
{
for (j=0;j<Total;j++)
{
if(OrderSelect(Order_array[j],SELECT_BY_TICKET)==true)
{
if (OrderCloseTime()!=0)
{
Alert("нашли закрытый в списке и удалили");
for (i=j+1;i<Total;i++) {Order_array[j]=Order_array[i];}
Total--;
}
}
}
}
Sleep(100);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+

Его написал RAVen_ Спасибо этому профессионалу .

 

Cari professionisti,

Come posso insegnare a un EA a leggere informazioni da un'altra finestra, dove un altro EA sta lavorando sulla stessa coppia di valute?

 
demlin:

Cari professionisti,

Come posso insegnare a un EA a leggere informazioni da un'altra finestra, dove un altro EA sta lavorando sulla stessa coppia di valute?


Prova ad andare in un altro modo, cioè a scambiare valori tra EAs con variabili globali... Non li ho usati io stesso, non conosco i dettagli, cercali e vedi come si usano...
 
demlin:

Cari professionisti,

Come posso insegnare a un EA a leggere informazioni da un'altra finestra dove un altro EA sta lavorando sulla stessa coppia di valute?

C'è anche una biblioteca di questo tipo.
 
semiromid:

Capisco che un ordine pendente e un ordine aperto sono ordini diversi. -------------- Sì (forse) Forse no. La cosa principale è che lo script dovrebbe funzionare quando l'ordine pendente viene aperto, cioè non quando viene piazzato ma quando viene aperto.


Questo è scavare un paio di alberi con un escavatore! Che senso ha separare gli ordini? Il prezzo è lo stesso per tutti. Gli ordini sono sempre trattati insieme, in blocco, dalla stessa migliore variante.

Cioè non importa chi piazza gli ordini, è importante quali parametri ha ogni singolo ordine. State cercando un vuoto.

Se dobbiamo eseguire il compito1 e il compito2, allora dobbiamo controllare ogni ordine, se il compito necessario è stato eseguito per esso o no. E non c'è bisogno di controllare se questo ordine è aperto adesso, o poco prima, o sta per essere aperto.

 
peshihod:


Si tratta di scavare un paio di alberi con un escavatore! Che senso ha separare gli ordini? Il prezzo è lo stesso per tutti. Gli ordini sono sempre trattati insieme, in blocco, alla stessa migliore opzione.

Cioè non importa chi piazza gli ordini, quello che conta sono i parametri di ogni singolo ordine. State cercando un vuoto.

Se dobbiamo eseguire il compito1 e il compito2, allora dobbiamo controllare ogni ordine, se il compito necessario è stato eseguito per esso o no. E non c'è bisogno di controllare se questo ordine è aperto adesso, o poco prima, o sta per essere aperto.

Si tratta di scavare un paio di alberi con un escavatore! ----------- Quale opzione più semplice c'è?

Che senso ha dividere gli ordini? -------------- Ho bisogno di dividere i miei ordini in boa e vendita. O intendi l'elaborazione degli ordini? Almeno datemi un suggerimento su come rendere lo script più semplice?

Stano, testandolo ora, tutto funziona. Perché non ha funzionato nel 1° test hmm... Forse perché c'è stato un riavvio del computer...Ma dopo un riavvio programmato, il robot sorrideva (funzionava). Quali sono le opzioni sul perché non ha funzionato allora? Forse un malfunzionamento simile accadrà in futuro.

 

Buona giornata a tutti.

Ho questa domanda. Supponiamo che ci sia un indicatore XXXXXXX (il nome non ha importanza)

Purtroppo non ho il codice sorgente dell'indicatore. Pertanto, non capisco su cosa si basa)

Posso sviluppare un Expert Advisor basato sui segnali dell'indicatore XXXXXXXXX per aprire ordini di vendita e di acquisto?

Ecco un esempio su uno screenshot

 
FreeSerfer:

Buona giornata a tutti.

Ho questa domanda. Supponiamo che ci sia un indicatore XXXXXXX (il nome non ha importanza)

Purtroppo non ho il codice sorgente dell'indicatore. Pertanto, non capisco su cosa si basa)

Posso sviluppare un Expert Advisor basato sui segnali dell'indicatore XXXXXXXXX per aprire ordini di vendita e di acquisto?

Ecco un esempio su uno screenshot


Sì, forse. Posso anche indovinare che tipo di tacchino... :-)))
 

Si prega di avvisare. Come posso far comprare questo robot in 20 secondi?

Non voglio che compri in 20 secondi, poi il prezzo vale altri 20 secondi, quindi vince solo in 40 secondi.

int start()
{

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point, "Order #", 0); // aprire un ordine di acquisto
Sleep(20000); // Timer per 20 secondi

return(0);
}

 
Uno script in loop è necessario per lavorare in base al tempo, non ai tick.
Motivazione: