[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 597
Buon pomeriggio, continuando a prendere confidenza con la codifica, ho preso l'esempio EA dall'articolo della sezione tutorial, ho sostituito il codice dell'esempio:
A uno arbitrario a scopo di allenamento:
Le compravendite non appaiono, potreste dirmi per favore qual è la ragione, come risolvere il codice.
double MA_1[]; // нет обьявления размера, не видно как (локально или глобально) обьявлен,
// не видно оператора двигающего индекс массива.// лучше пока не освоили работу с массивами обьявите переменные и не парьтесьdouble MA_0=iMA(NULL,0,Period_MA,0,MODE_EMA,PRICE_CLOSE,0);
double MA_1=iMA(NULL,0,Period_MA,0,MODE_EMA,PRICE_CLOSE,1);
if (MA_1 < MA_0)
{ // ..МА последнего бара выше предыдущего
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
}
if (MA_1 > MA_0)
{ // ..МА последнего бара ниже предыдущего
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
}
Urain, grazie, non finisco mai di stupirmi della logica di mql, e se si prova a usare for(int i=1; per provare, lo script non si semplifica - potresti dirmi come formattarlo, non riesco ancora a sentire la logica del linguaggio, come definire l'operatore che sposta l'array?
P. S. Ho dichiarato l'array, per errore nello script di esempio ha rimosso:
Abzasc: Differenze di prezzo. Di conseguenza, diversi, al contrario, i risultati degli indicatori...
Non ci vedo niente di diverso. Dimentica gli indicatori, ancora una volta, quello giusto per te è quello su cui fai trading. Non ti stai concentrando affatto su quello giusto.
extern int n = 20; extern int t3_period = 5; extern double b = 0,618; extern int int mBars = 300; extern int Bars.Count = 0; int i,t,c; double Buf1[],Buf2[],CF_p[5001],CF_n[5001],Ch_p[5001],Ch_n[5001],k_n,k_p,ch_p,ch_n,cff_p,cff_n, AcBars,t3,t32,A1,A2,b2,b3,c1,c2,c3,c4,e1,e2,e3,e4,e5,e6,n1,w1,w2,e12,e22,e32,e42,e52,e62;
//+------------------------------------------------------------------+ int init() { SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0, Buf1); SetIndexStyle(1, DRAW_LINE); SetIndexBuffer(1, Buf2); return(0); } //+------------------------------------------------------------------+ int start() { limite int; se (IndicatorCounted()<0) return(-1); limit=Bars-IndicatorCounted(); if (Bars.Count>0 && limit>Bars.Count) limit=Bars.Count; for(int i=0; i<limit; i++) {
Buon pomeriggio. Un array è stato dichiarato, l'operatore che sposta l'indice dell'array è stato impostato, ma gli ordini non vengono piazzati. Per favore, ditemi cosa c'è che non va.
Avete letto l'aiuto standard di MetaEditore? Se no, leggete tutto...
Craft:
Buon pomeriggio. Ho dichiarato un array e definito l'operatore che sposta l'indice dell'array, ma gli ordini non vengono piazzati. Per favore, consigliatemi cosa c'è che non va.
Potete dirmi se è possibile riscrivere la funzione di Igor Kim, che chiude tutti gli ordini perdenti, la cui perdita supera un certo valore:
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 25.04.2008 |//| Описание : Закрытие тех позиций, у которых убыток в валюте депозита |//| превысил некоторое значение |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| pr - профит/убыток |//+----------------------------------------------------------------------------+void ClosePosBySizeLossInCurrency(string sy="", int op=-1, int mn=-1, double pr=0) {
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderProfit()+OrderSwap()<-MathAbs(pr)) ClosePosBySelect();
}
}
}
}
}
}
Ho bisogno di trovare una posizione aperta che abbia la perdita maggiore. Il punto è che devo trovare la posizione con più profitto di quella perdente e chiuderla in contro-chiusura. Forse qualcuno ha qualche esperienza con questo, o ha affrontato un tale problema?
Perché tre indicatori basati su principi diversi non possono mostrare quasi la stessa immagine (spearman, stocastico e mcdrsy) - ma non possono mostrare il movimento giusto e l'entrata con una probabilità superiore al 60%?
Salve, mi sto chiedendo quale codice è necessario per chiudere un ordine dopo che ha superato il punto X di profitto e ha iniziato a scendere fino al punto Y>OrderOpenPrice e poi ha bisogno di chiuderlo.
Buon pomeriggio, continuando a prendere confidenza con la codifica, ho preso l'esempio EA dall'articolo della sezione tutorial, ho sostituito il codice dell'esempio:
A uno arbitrario a scopo di allenamento:
Le compravendite non appaiono, potreste dirmi per favore qual è la ragione, come risolvere il codice.Urain, grazie, non finisco mai di stupirmi della logica di mql, e se si prova a usare for(int i=1; per provare, lo script non si semplifica - potresti dirmi come formattarlo, non riesco ancora a sentire la logica del linguaggio, come definire l'operatore che sposta l'array?
P. S. Ho dichiarato l'array, per errore nello script di esempio ha rimosso:
Differenze di prezzo. Di conseguenza, diversi, al contrario, i risultati degli indicatori...
#proprietà indicator_buffers 2
#property indicator_color1 blue
#property indicator_color2 Red
extern int n = 20;
extern int t3_period = 5;
extern double b = 0,618;
extern int int mBars = 300;
extern int Bars.Count = 0;
int i,t,c;
double Buf1[],Buf2[],CF_p[5001],CF_n[5001],Ch_p[5001],Ch_n[5001],k_n,k_p,ch_p,ch_n,cff_p,cff_n,
AcBars,t3,t32,A1,A2,b2,b3,c1,c2,c3,c4,e1,e2,e3,e4,e5,e6,n1,w1,w2,e12,e22,e32,e42,e52,e62;
//+------------------------------------------------------------------+
int init() {
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, Buf1);
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, Buf2);
return(0); }
//+------------------------------------------------------------------+
int start() {
limite int;
se (IndicatorCounted()<0) return(-1);
limit=Bars-IndicatorCounted();
if (Bars.Count>0 && limit>Bars.Count) limit=Bars.Count;
for(int i=0; i<limit; i++)
{
b2=b*b; b3=b2*b; c1=-b3; c2=(3*(b2+b3)); c3=-3*(2*b2+b3); c4=(1+3*b+b3+3*b2); n1=t3_periodo;
if(n1<1) n1=1; n1=1+0,5*(n1-1); w1=2/(n1+1); w2=1-w1;
if(AcBars==0) AcBars=Bars-mBars;
for(c=AcBars; c<=Bars-1; c +++) { i=Bars-1-c; {
if(Close[i]>Close[i+1]) { Ch_p[i]=Close[i]-Close[i+1]; CF_p[i]=Ch_p[i]+CF_p[i+1]; Ch_n[i]=0; CF_n[i]=0; }
else { Ch_p[i]=0; CF_p[i]=0; Ch_n[i]=Close[i+1]-Close[i]; CF_n[i]=Ch_n[i]+CF_n[i+1]; }}
for(t=i+n; t>=i; t--) { ch_p=Ch_p[t]+ch_p; ch_n=Ch_n[t]+ch_n ; cff_p=CF_p[t]+cff_p; cff_n=CF_n[t]+cff_n; }
k_p=ch_p-cff_n; k_n=ch_n-cff_p;
A1=k_p; e1=w1*A1+w2*e1; e2=w1*e1+w2*e2; e3=w1*e2+w2*e3; e4=w1*e3+w2*e4;
e5=w1*e4+w2*e5; e6=w1*e5+w2*e6; t3=c1*e6+c2*e5+c3*e4+c4*e3; Buf1[i]=t3;
A2=k_n; e12=w1*A2+w2*e12; e22=w1*e12+w2*e22; e32=w1*e22+w2*e32; e42=w1*e32+w2*e42;
e52=w1*e42+w2*e52; e62=w1*e52+w2*e62; t32=c1*e62+c2*e52+c3*e42+c4*e32; Buf2[i]=t32;
AcBars=AcBars+1; ch_p=0; ch_n=0; cff_p=0; cff_n=0; }
}
return(0); }
Potete dirmi dove l'errore non si aggiorna, la cronologia è normale e quella online no
Buon pomeriggio. Un array è stato dichiarato, l'operatore che sposta l'indice dell'array è stato impostato, ma gli ordini non vengono piazzati. Per favore, ditemi cosa c'è che non va.
ProvaOrderSend, poi funziona...
Avete letto l'aiuto standard di MetaEditore? Se no, leggete tutto...
Buon pomeriggio. Ho dichiarato un array e definito l'operatore che sposta l'indice dell'array, ma gli ordini non vengono piazzati. Per favore, consigliatemi cosa c'è che non va.
Ho bisogno di trovare una posizione aperta che abbia la perdita maggiore.
Il punto è che devo trovare la posizione con più profitto di quella perdente e chiuderla in contro-chiusura.
Forse qualcuno ha qualche esperienza con questo, o ha affrontato un tale problema?
Prova OrderSend, poi funziona...
Avete letto l'aiuto standard di MetaEditore? Se no, leggete tutto...
Di età infantile per fare una domanda senza aver affrontato per aiutare e yandex sono cresciuti. Ci sono molti Invii, ma le posizioni non si aprono: