[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 326

 
drknn:


Iniziare con la definizione del problema.

- Usa lo script per rilevare la presenza di una linea sul grafico.

- Se la linea esiste, stampa il suo prezzo iniziale e finale nelle variabili; stampa i numeri delle barre (o il tempo) nelle variabili.

- Fate i calcoli necessari usando lo script.

- Stampare i risultati sullo schermo (o su un documento di testo o sul giornale di Expert Advisor)

Se non riesci a risolvere subito questi 4 problemi, inizia a imparare la lingua.


drknn! grazie! Mi informerò!!!
 
Zhunko:

Non è un segreto. C'è molto scritto al riguardo. Non importa quale strumento sia stato usato per creare la storia. Il punto è aggiornare il grafico in modo che l'Expert Advisor lavori su di esso.

Questo può essere fatto per mezzo di WinAPI. È stato descritto qui molte volte. Ho scritto una biblioteca. L'ho pubblicato qui.

Contiene funzioni per controllare l'aggiornamento autonomo del grafico. Non richiede alcuno script o esperto. Ma non è per tutti. Ci sono anche funzioni disponibili per tutti per aggiornare il grafico da un Expert Advisor, uno script o un indicatore. È più difficile usarli. Perché dovete pensare a quale dei vostri programmi aggiornerà il grafico. Gli esempi sono nello script di test.

Hai per caso una soluzione pronta per "estrarre" l'ultima riga del file di log da visualizzare nei commenti?
 

Aiuta un nerd. Solo per rispolverare l'essenza della domanda.

Ho due punti sul grafico, il punto 2 - quello più vicino alla barra zero e t.1 - quello più lontano dalla barra zero nella storia. Cerco di tracciare una linea di tendenza da questi due punti,

estendendo un segmento tra questi punti di N (variabile int RayLong) intervalli in avanti. Il codice è il seguente:

if (RayLong!=0 && point1s==true && point2s==true)
{
//расчет цены в будущем
if (price11s>price22s) {price11s=NormalizeDouble(price11s+((price11s-price22s)*RayLong),Digits);} 
if (price11s<price22s) {price11s=NormalizeDouble(price11s-((price22s-price11s)*RayLong),Digits);}
//расчет бара в будущем
int bis=iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true);
Print("Sup "+iBarShift(Symbol(),0,time22s,true)+" "+iBarShift(Symbol(),0,time11s,true)+" "+bis+
" sec="+bis*Period()*60*NormalizeDouble(RayLong,Digits)+" Time="+TimeToStr(time11s+(Period()*60*
(iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true)+1)*RayLong),TIME_DATE|TIME_SECONDS));
time11s=time11s+(Period()*60*((iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true))*RayLong));
//time11s=time11s+((time11s-time22s)*RayLong); //альтернативный вариант предыдущей строки
}
Il problema è che il punto di calcolo è fluttuante sulla data. Il prezzo è OK. La data, invece, è fine o fluttuante. La stampa mostra che questo accade quando la data di liquidazione non è nel programma - fine settimana o vacanze. Per favore, suggerite una soluzione al problema.
 
forexnew:
Hai per caso una soluzione pronta per "estrarre" l'ultima riga del file di log da visualizzare nei commenti?
Questo è inutile. Il file di log viene compilato dopo l'upload di MT4 o quando MT4 ha il tempo di farlo.
 
ZZZEROXXX:

Aiuta un nerd. Solo per rispolverare l'essenza della domanda.

Ho due punti sul grafico, il punto 2 - quello più vicino alla barra zero e t.1 - quello più lontano dalla barra zero nella storia. Cerco di tracciare una linea di tendenza da questi due punti,

estendendo un segmento tra questi punti di N (variabile int RayLong) intervalli in avanti. Il codice è il seguente:

Il problema è che il punto di calcolo è fluttuante sulla data. Tutto è a posto con il prezzo. La data, invece, è fine o fluttuante. Uso Print per capire che questo accade quando la data di insediamento non è nel programma - fine settimana o vacanze. Per favore, consigliatemi come risolvere questo problema.

Non capisco il problema. Se state disegnando per prezzo e barre Non ci sono barre di fine settimana e non fine settimana sul grafico. Quindi la tendenza e dovrebbe continuare alle prossime barre corrispondenti alle date dei giorni di trading.

O è diverso per voi?

 

Potreste dirmi se l'array sarà riempito con i tikets degli ordini in sospeso nel seguente codice:

int tiket[];

int SetFunk()

{

per (i=0; i<=k-1; i++)

{
ticket[i]=OrderSend(Symbol(),OP_BUYSTOP,0.01*Lots,Ask+Step*i*Point,3,Bid-S_Loss*Point,0,",10000,0,Green);

ticket[i+k]=OrderSend(Symbol(),OP_SELLSTOP,0..01*Lots,Bid-Step*i*Point,3,Ask+S_Loss*Point,0,"",10000,0,Green);

}

}

?????
vengono restituiti dei nulli quando si cerca di stampare()

 
A cosa serve la classe di memoria statica? Se possibile, puoi dare un buon esempio del suo uso nel codice e sottolineare le caratteristiche che lo distinguono dalle altre classi di memoria? Questa cosa sembra essere inutile, chissà cosa?
 
myrzila:

Potreste dirmi se l'array sarà riempito con i tikets degli ordini in sospeso nel seguente codice:

int tiket[];

int SetFunk()

{

per (i=0; i<=k-1; i++)

{
ticket[i]=OrderSend(Symbol(),OP_BUYSTOP,0.01*Lots,Ask+Step*i*Point,3,Bid-S_Loss*Point,0,",10000,0,Green);

ticket[i+k]=OrderSend(Symbol(),OP_SELLSTOP,0..01*Lots,Bid-Step*i*Point,3,Ask+S_Loss*Point,0,"",10000,0,Green);

}

}

?????
vengono restituiti dei nulli quando si cerca di stampare()

prima imposta la dimensione dell'array (ArrayResize) e poi lavora con esso
 

Salve.

Ho un EA.

Come posso fare in modo che mostri i livelli di media mobile mostrati nell'immagine?

In questo momento mostra solo degli zeri.


//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
int init()
{
//----

//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di inizio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0)-0.0015,0),Red,10,20,0,20);
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0),0),Red,10,50,0,20);
//----
ritorno(0);
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
se (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER, cr);
ObjectSet(nm, OBJPROP_FONTSIZE, fs);
}




 
emilien:


Salve.

Ho un EA.

Come posso fare in modo che mostri i livelli di media mobile mostrati nell'immagine?

In questo momento mostra solo degli zeri.


//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
int init()
{
//----

//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di inizio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0)-0.0015,0),Red,10,20,0,20);
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0),0),Red,10,50,0,20);
//----
ritorno(0);
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
se (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER, cr);
ObjectSet(nm, OBJPROP_FONTSIZE, fs);
}




double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

Non ho ancora sentito parlare dell'orario 13