Ci sarà una risposta o passerà alla storia come una domanda scomoda come al solito?
O l'amministrazione può solo cambiare la sequenza dei link nel menu superiore?
Il quarto forum è stato a lungo non supportato, ma come materiale di riferimento rimane. Almeno questa decisione è stata espressa dall'amministrazione.
Anche se non sono dell'amministrazione, non hai nemmeno risposto alla mia domanda...
Sì, ho fatto il login nel forum con il mio account e cosa ti ha portato? Solo per soddisfare la tua curiosità?
Artyom Trishkin: Il quarto forum non è stato supportato per molto tempo, ma è stato conservato come materiale di riferimento. Almeno questa decisione è stata espressa dall'amministrazione.
Quindi l'avrebbero chiuso e reindirizzato tutto al forum mql5. Perché castrarlo?
La gente continua a usarlo e a comunicare, il che significa che è necessario e la sua funzionalità deve essere mantenuta!
Così si scopre che, come sempre, gli utenti e la loro opinione sono ignorati e tutto viene deciso unilateralmente.
Sì, ho fatto il login nel forum con il mio account e questo cosa fa per voi? Soddisferà solo la tua curiosità?
Allora perché non chiuderlo e reindirizzarlo al forum mql5? Perché volete castrarlo?
La gente lo usa ancora e comunica, il che significa che è necessario e la sua funzionalità deve essere mantenuta!
Ma si scopre che, come sempre, gli utenti e la loro opinione vengono ignorati e tutto viene deciso unilateralmente.
Questo è esattamente il motivo per cui non ti è stato chiesto circa un anno fa, quando hanno preso la decisione di smettere di sostenere il quarto forum. Proprio perché c'è un sacco di informazioni utili, non è stato ucciso - usalo. Ma come riferimento.
Buon pomeriggio. Di fronte a un problema di definizione delle dimensioni del lotto. Ecco il codice.
In particolare su Alpari. In particolare per USD-JPY. Dovrebbe emettere i dati sugli ordini al grafico, ma .....per USD-JPY non può mostrare il valore corretto! Sono interessato ai dati dell'array!
Cosa posso fare in più?
#property version"1.00"#property strict#property indicator_chart_windowdouble Mas_Ord_Old[1000][19];
double Mas_Ord_New[1000][19];
double Mas_Tip[6];
string Mas_tip[6];
externint FontSize=12;
externcolor TextColor=clrIvory;
externcolor TextColor1=clrGray;
externcolor TextColor2=clrRed;
externcolor TextColor3=clrYellow;
externint X=20;
externint Y=15;
int n;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
Terminal();
//---Comment(" пример неправильного лота ");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+////+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
DeleteLabel();
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---
Terminal();
int shift=15;
DeleteLabel();
n=13;
double proffit=0;
double pro=0;
double stloss=0;
double los=0;
int a9=(int)NormalizeDouble( Mas_Ord_Old [0][10],0);//MathIsValidNumber//for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)for(int cnt=a9-1;cnt>=0;cnt--)
{
//.. и наша вал.параdouble a0= Mas_Ord_Old [cnt][0]; // OrderTicket(); I // Тикет ордераdouble a1= Mas_Ord_Old [cnt][1]; // OrderOpenPrice(); D // Курс открытия ордdouble a2= Mas_Ord_Old [cnt][2]; // OrderLots(); D // Количество лотов !!!!!!!!!!!!!!!!double a3= Mas_Ord_Old [cnt][3]; // OrderTakeProfit(); D // Курс ТРdouble a4= Mas_Ord_Old [cnt][4]; // OrderSwap(); D // Свопdouble a5= Mas_Ord_Old [cnt][5]; // OrderStopLoss(); D // Курс SLdouble a6= Mas_Ord_Old [cnt][6]; // OrderType(); I // Тип ордераdouble a7= Mas_Ord_Old [cnt][7]; // OrderMagicNumber(); I // Магическое числоdouble a8= Mas_Ord_Old [cnt][8]; //double Aa2= (double)((NormalizeDouble( a2,2))*100);
double Aaa2=(double)((NormalizeDouble( Aa2,2))/100);
// Print("2- OrderLots= ",Aa2," OrderType= ",Aaa2," OrderMagicNumber= ",a7," Ciomment= ",a8," кол-во = ",a0);string text=StringConcatenate(" Тикет= Опен= ",a1," ЛОТ!!!= ",a2," ЛОТ 2= ",Aa2," 4= ",a4," 5= ",a5," 6= ",a6," 7= ",a7," 8= ",a8);
CreateLabel(StringConcatenate("Label_",n),text,X,Y+n*shift,clrYellow);
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+// double Mas_Ord_Old[1000][9];// double Mas_Ord_New[1000][9];// double Mas_Tip[6];// ~~~~~~~~~~~~~~~~~~ Работа с ордерами ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~bool Terminal()
{
int Qnt=0; // Счётчик количества ордеров//--------------------------------------------------------------- 3 --ArrayCopy(Mas_Ord_Old, Mas_Ord_New,0,0,WHOLE_ARRAY);// Сохраняем предыдущую историю
Qnt=0; // Обнуление счётчика ордеровArrayInitialize(Mas_Ord_New,0); // Обнуление массива// ArrayInitialize(Mas_Tip, 0); // Обнуление массива//--------------------------------------------------------------- 4 --for(int i=OrdersTotal()-1; i>=0; i--) // По рыночн. и отлож. ордерам
{ //.. и наша вал.пара && (OrderSymbol()==Symbol())if((OrderSelect(i,SELECT_BY_POS)==true) )
{
//------------------------------------------------------ 5 --
Mas_Ord_New[Qnt][0]=OrderTicket(); // Курс открытия орд
Mas_Ord_New[Qnt][1]=OrderOpenPrice(); // Курс открытия орд
Mas_Ord_New[Qnt][2]= OrderLots(); // Курс SL
Mas_Ord_New[Qnt][3]=OrderTakeProfit(); // Курс ТР
Mas_Ord_New[Qnt][4]=OrderSwap(); // Номер ордера
Mas_Ord_New[Qnt][5]=OrderStopLoss(); // Количество лотов// Mas_Tip[OrderType()]++; // Кол. ордеров типа
Mas_Ord_New[Qnt][6]=OrderType(); // Тип ордера
Mas_Ord_New[Qnt][7]=OrderMagicNumber(); // Магическое числоif (OrderComment()=="")
Mas_Ord_New[Qnt][8]=0; // Если нет комментelse
Mas_Ord_New[Qnt][8]=1; // Если есть коммент
Qnt++; // Колич. ордеров//------------------------------------------------------ 6 --
}
}
Mas_Ord_New[0][10]=Qnt; // Колич. ордеров//--------------------------------------------------------------- 7 --return0;
}
// ~~~~~~~~~~~~~~~~~~ Работа с ордерами ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//+--------------------------------------------------------------------+void CreateLabel(string name, string text,int x, int y, color c) //
{ //ObjectCreate(name, OBJ_LABEL,0,0,0); //
ObjectSetText(name,text,FontSize,"Times New Roman",TextColor); //
ObjectSet(name,OBJPROP_CORNER,0
); //
ObjectSet(name,OBJPROP_XDISTANCE,x); //
ObjectSet(name,OBJPROP_YDISTANCE,y); //
ObjectSet(name,OBJPROP_COLOR,c); //
n++; //
} //void DeleteLabel() //
{ //for(int i=ObjectsTotal();i>=0;i--) //
{ //if(StringSubstr(ObjectName(i),0,6)=="Label_") //ObjectDelete(ObjectName(i)); //
} //
} ////+--------------------------------------------------------------------+
Buon pomeriggio. Di fronte a un problema di definizione delle dimensioni del lotto. Ecco il codice.
In particolare su Alpari. In particolare per USD-JPY. Dovrebbe emettere i dati sugli ordini al grafico, ma .....per USD-JPY non può mostrare il valore corretto! Sono interessato ai dati dell'array!
Cosa posso fare in più?
Ma funziona nel tutorial di Kovalev. Cosa mi impedisce di copiarlo correttamente e di adattarlo alle nuove esigenze?
il vostro lotto viene stampato dalla variabile a2, ma cosa ci salviamo? Ecco qui:
Mas_Ord_New[Qnt][2]= OrderLots(); // Курс SL
Forse dovremmo stamparlo usando DoubleToString()?
E state normalizzando il lotto in modo errato. Avete bisogno di una funzione per la normalizzazione dei lotti. Non lo cercherò. Potete cercarlo da Kim - farà al caso vostro.
Ho visto le vostre specifiche. Non ho curiosato perché penso che sia tutto superfluo. Tutti quei terminali di Kovalev...
Ma nel tuo codice vedo una discrepanza tra i dati memorizzati e la descrizione di questi dati nei commenti - è già confuso.
Più in là:
il vostro lotto viene stampato dalla variabile a2, ma cosa ci salviamo? Ecco qui:
O forse dovremmo emetterlo attraverso DoubleToString()?
Il lotto è normalizzato in modo errato. Abbiamo bisogno di una funzione per la normalizzazione dei lotti. Non lo cercherò. Potete cercarlo in Kim's - funzionerà per voi.
Trovato. Grazie. Ma non risolve il compito in questione.
Funziona correttamente su altre CA e con questo codice.
Non funziona correttamente con la funzione di Kim.
Legge correttamente tramite DoubleToString() ma calcola in modo errato. Non conterò attraverso DoubleToString(). Se vado e torno, trasferisce le stringhe correttamente ma i raddoppi di stringhe sono di nuovo sbagliati.
Il problema è in Alpari e abbiamo bisogno di una stampella per aggirarlo.
USD-SEK visualizza erroneamente il prezzo di apertura su un'altra coppia.
#property version"1.00"#property strict#property indicator_chart_windowdouble Mas_Ord_Old[1000][19];
double Mas_Ord_New[1000][19];
double Mas_Tip[6];
string Mas_tip[6];
externint FontSize=12;
externcolor TextColor=clrIvory;
externcolor TextColor1=clrGray;
externcolor TextColor2=clrRed;
externcolor TextColor3=clrYellow;
externint X=20;
externint Y=15;
int n;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
Terminal();
//---Comment(" пример неправильного лота ");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+////+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
DeleteLabel();
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---
Terminal();
int shift=15;
DeleteLabel();
n=13;
double proffit=0;
double pro=0;
double stloss=0;
double los=0;
int a9=(int)NormalizeDouble( Mas_Ord_Old [0][10],0);//MathIsValidNumber//for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)for(int cnt=a9-1;cnt>=0;cnt--)
{
//.. и наша вал.параdouble a0= Mas_Ord_Old [cnt][0]; // OrderTicket(); I // Тикет ордераdouble a1= Mas_Ord_Old [cnt][1]; // OrderOpenPrice(); D // Курс открытия ордstring a2= DoubleToString(Mas_Ord_Old [cnt][2],2); // OrderLots(); D // Количество лотов !!!!!!!!!!!!!!!!double a3= Mas_Ord_Old [cnt][3]; // OrderTakeProfit(); D // Курс ТРdouble a4= Mas_Ord_Old [cnt][4]; // OrderSwap(); D // Свопdouble a5= Mas_Ord_Old [cnt][5]; // OrderStopLoss(); D // Курс SLdouble a6= Mas_Ord_Old [cnt][6]; // OrderType(); I // Тип ордераdouble a7= Mas_Ord_Old [cnt][7]; // OrderMagicNumber(); I // Магическое число double a8= Mas_Ord_Old [cnt][8]; // double Aa2= (double)(StringToDouble(a2));
double Aaa2=(double)((NormalizeDouble( Aa2,2))/100);
// Print("2- OrderLots= ",Aa2," OrderType= ",Aaa2," OrderMagicNumber= ",a7," Ciomment= ",a8," кол-во = ",a0);string text=StringConcatenate(" Опен= ",a1," ЛОТ string= ",a2," ЛОТ double= ",Aa2 );
CreateLabel(StringConcatenate("Label_",n),text,X,Y+n*shift,clrYellow);
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+// double Mas_Ord_Old[1000][9];// double Mas_Ord_New[1000][9];// double Mas_Tip[6];// ~~~~~~~~~~~~~~~~~~ Работа с ордерами ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~bool Terminal()
{
int Qnt=0; // Счётчик количества ордеров//--------------------------------------------------------------- 3 --ArrayCopy(Mas_Ord_Old, Mas_Ord_New,0,0,WHOLE_ARRAY);// Сохраняем предыдущую историю
Qnt=0; // Обнуление счётчика ордеровArrayInitialize(Mas_Ord_New,0); // Обнуление массива// ArrayInitialize(Mas_Tip, 0); // Обнуление массива//--------------------------------------------------------------- 4 --for(int i=OrdersTotal()-1; i>=0; i--) // По рыночн. и отлож. ордерам
{ //.. и наша вал.пара && (OrderSymbol()==Symbol())if((OrderSelect(i,SELECT_BY_POS)==true) )
{
//------------------------------------------------------ 5 --
Mas_Ord_New[Qnt][0]=OrderTicket(); // Курс открытия орд
Mas_Ord_New[Qnt][1]=OrderOpenPrice(); // Курс открытия орд
Mas_Ord_New[Qnt][2]=NormalizeLot( OrderLots(),0,Symbol()); // Курс SL
Mas_Ord_New[Qnt][3]=OrderTakeProfit(); // Курс ТР
Mas_Ord_New[Qnt][4]=OrderSwap(); // Номер ордера
Mas_Ord_New[Qnt][5]=OrderStopLoss(); // Количество лотов// Mas_Tip[OrderType()]++; // Кол. ордеров типа
Mas_Ord_New[Qnt][6]=OrderType(); // Тип ордера
Mas_Ord_New[Qnt][7]=OrderMagicNumber(); // Магическое число if (OrderComment()=="")
Mas_Ord_New[Qnt][8]=0; // Если нет комментelse
Mas_Ord_New[Qnt][8]=1; // Если есть коммент
Qnt++; // Колич. ордеров//------------------------------------------------------ 6 --
}
}
Mas_Ord_New[0][10]=Qnt; // Колич. ордеров//--------------------------------------------------------------- 7 --return0;
}
// ~~~~~~~~~~~~~~~~~~ Работа с ордерами ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//+----------------------------------------------------------------------------+double NormalizeLot(double lo, bool ro=False, string sy="") {
double l, k;
if (sy=="" || sy=="0") sy=Symbol();
double ls=MarketInfo(sy, MODE_LOTSTEP);
double ml=MarketInfo(sy, MODE_MINLOT);
double mx=MarketInfo(sy, MODE_MAXLOT);
if (ml==0) ml=0.1;
if (mx==0) mx=100;
if (ls>0) k=1/ls; else k=1/ml;
if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k;
if (l<ml) l=ml;
if (l>mx) l=mx;
return(l);
//+----------------------------------------------------------------------------+
}
//+--------------------------------------------------------------------+void CreateLabel(string name, string text,int x, int y, color c) //
{ //ObjectCreate(name, OBJ_LABEL,0,0,0); //
ObjectSetText(name,text,FontSize,"Times New Roman",TextColor); //
ObjectSet(name,OBJPROP_CORNER,0
); //
ObjectSet(name,OBJPROP_XDISTANCE,x); //
ObjectSet(name,OBJPROP_YDISTANCE,y); //
ObjectSet(name,OBJPROP_COLOR,c); //
n++; //
} //void DeleteLabel() //
{ //for(int i=ObjectsTotal();i>=0;i--) //
{ //if(StringSubstr(ObjectName(i),0,6)=="Label_") //ObjectDelete(ObjectName(i)); //
} //
} ////+--------------------------------------------------------------------+
Ci sarà una risposta o passerà alla storia come una domanda scomoda come al solito?
O l'amministrazione può solo cambiare la sequenza dei link nel menu superiore?
Anche se non sono dell'amministrazione, non hai nemmeno risposto alla mia domanda...
Sì, ho fatto il login nel forum con il mio account e cosa ti ha portato? Solo per soddisfare la tua curiosità?
Il quarto forum non è stato supportato per molto tempo, ma è stato conservato come materiale di riferimento. Almeno questa decisione è stata espressa dall'amministrazione.
Quindi l'avrebbero chiuso e reindirizzato tutto al forum mql5. Perché castrarlo?
La gente continua a usarlo e a comunicare, il che significa che è necessario e la sua funzionalità deve essere mantenuta!
Così si scopre che, come sempre, gli utenti e la loro opinione sono ignorati e tutto viene deciso unilateralmente.
Sì, ho fatto il login nel forum con il mio account e questo cosa fa per voi? Solo per soddisfare la tua curiosità?
Sì, ho fatto il login nel forum con il mio account e questo cosa fa per voi? Soddisferà solo la tua curiosità?
Allora perché non chiuderlo e reindirizzarlo al forum mql5? Perché volete castrarlo?
La gente lo usa ancora e comunica, il che significa che è necessario e la sua funzionalità deve essere mantenuta!
Ma si scopre che, come sempre, gli utenti e la loro opinione vengono ignorati e tutto viene deciso unilateralmente.
Riguardo all'inizializzazione. È possibile scriverlo in questo modo?
...Comunque, la mia inizializzazione preferita tramite ={0} con le stringhe non funziona. È un peccato.
Domanda su MT4 .
Buon pomeriggio. Di fronte a un problema di definizione delle dimensioni del lotto. Ecco il codice.
In particolare su Alpari. In particolare per USD-JPY. Dovrebbe emettere i dati sugli ordini al grafico, ma .....per USD-JPY non può mostrare il valore corretto! Sono interessato ai dati dell'array!
Cosa posso fare in più?
Domanda su MT4 .
Buon pomeriggio. Di fronte a un problema di definizione delle dimensioni del lotto. Ecco il codice.
In particolare su Alpari. In particolare per USD-JPY. Dovrebbe emettere i dati sugli ordini al grafico, ma .....per USD-JPY non può mostrare il valore corretto! Sono interessato ai dati dell'array!
Cosa posso fare in più?
Ma il tutorial di Kovalev funziona ancora. Cosa ci impedisce di copiarlo correttamente e di adattarlo alle nuove esigenze?
Ti sorprenderò, ma funziona anche in altri centri commerciali. Se leggete attentamente il post dall'inizio...
In particolare su Alpari. In particolare su USD-JPY.
Cosa possiamo fare in più?
Ti sorprenderò, ma funziona anche in altri centri commerciali. Se leggete attentamente il post dall'inizio...
In particolare su Alpari. In particolare su USD-JPY.
Cosa si può fare in più?
... ... in altri centri commerciali? :)
Ho visto le vostre specifiche. Non ho curiosato perché penso che sia ridondante. Tutti quei terminali di Kovalev...
Ma nel tuo codice vedo una discrepanza tra i dati memorizzati e la descrizione di questi dati nei commenti - è già confuso.
Più in là:
il vostro lotto viene stampato dalla variabile a2, ma cosa ci salviamo? Ecco qui:
Forse dovremmo stamparlo usando DoubleToString()?
E state normalizzando il lotto in modo errato. Avete bisogno di una funzione per la normalizzazione dei lotti. Non lo cercherò. Potete cercarlo da Kim - farà al caso vostro.
... in altri centri commerciali? :)
Ho visto le vostre specifiche. Non ho curiosato perché penso che sia tutto superfluo. Tutti quei terminali di Kovalev...
Ma nel tuo codice vedo una discrepanza tra i dati memorizzati e la descrizione di questi dati nei commenti - è già confuso.
Più in là:
il vostro lotto viene stampato dalla variabile a2, ma cosa ci salviamo? Ecco qui:
O forse dovremmo emetterlo attraverso DoubleToString()?
Il lotto è normalizzato in modo errato. Abbiamo bisogno di una funzione per la normalizzazione dei lotti. Non lo cercherò. Potete cercarlo in Kim's - funzionerà per voi.
Trovato. Grazie. Ma non risolve il compito in questione.
Funziona correttamente su altre CA e con questo codice.
Non funziona correttamente con la funzione di Kim.
Legge correttamente tramite DoubleToString() ma calcola in modo errato. Non conterò attraverso DoubleToString(). Se vado e torno, trasferisce le stringhe correttamente ma i raddoppi di stringhe sono di nuovo sbagliati.
Il problema è in Alpari e abbiamo bisogno di una stampella per aggirarlo.
USD-SEK visualizza erroneamente il prezzo di apertura su un'altra coppia.