[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 298
L'archivio contiene due indicatori e l'Expert Advisor su cui sto lavorando (test-cifr), gli indicatori funzionano da soli, ma non posso incollarli in Expert Advisor (l'unico scopo di Expert Advisor è l'output di valori), per favore aiutatemi a capire perché non lo fanno e come incollarli.
Come posso visualizzare sul grafico l'iscrizione sullo strumento corrente Profitto/perdita degli ordini aperti.
È difficile controllare nell'Expert Advisor se ha aperto posizioni o no (terminale on/off) e prendere il volume dell'ultimo lotto prima di chiudere il terminale.
Se ho fatto dei trade passati, allora uso la funzione orderprofit e poi sommo tutta la storia dei trade.
Mi chiedo se qualcuno ha delle risposte alla mia domanda.
Copia l'intero codice nel tuo Expert Advisor
come questo
//+------------------------------------------------------------------+//| Xrust.mq4 |//| Copyright 2013, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2013, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"externint TimeFrame=0;//Если=0, то текушийexternstring FrApNam="Ap";//Имя линии соотв.Фракталу вверхexternstring FrDnNam="Dn";//Имя линии соотв.Фракталу внизexterncolor ClAp=Blue;//Цвет линии соотв.Фракталу вверхexterncolor ClDn=Red;//Цвет линии соотв.Фракталу вниз//-----------------------------------------------------------------------------+double FrApPrise,FrDnPrise;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----if(TimeFrame==0){TimeFrame=Period();}
IndicatorShortName("Factal_Level_Xrust"+TimeFrame);
FrApNam=StringConcatenate(FrApNam,TimeFrame);
FrDnNam=StringConcatenate(FrDnNam,TimeFrame);
//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----ObjectDelete(FrDnNam);
ObjectDelete(FrApNam);
Comment(" ");
//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----
LineAp();
LineDn();
int diap=MathRound((FrApPrise-FrDnPrise)/Point);
Comment("\n"," LineDn = ",FrDnPrise,
"\n", " LineAp = ",FrApPrise,
"\n"," diap = ",diap );
//----return(0);
}
//+------------------------------------------------------------------+//-----------------------------------------------------------------------------+// Ищет горизонтальную линию по имени перерисовывает если изменилась цена | //-----------------------------------------------------------------------------+void LineDn(){
FrDnPrise=0;
double FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
//Comment(FrPrise);if(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrDnPrise=FrPrise;
ObjectDelete(FrDnNam);
SetHLine(ClDn,FrDnNam,FrDnPrise,0,1);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+// Ищет горизонтальную линию по имени перерисовывает если изменилась цена | //-----------------------------------------------------------------------------+void LineAp(){
FrApPrise=0;
double FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
if(ObjectFind(FrApNam)==0){
if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrApPrise=FrPrise;
ObjectDelete(FrApNam);
SetHLine(ClAp,FrApNam,FrApPrise,0,1);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+ // Киму Респект и уважуха !!! | //+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 07.10.2006 |//| Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий ТФ) |//| mode - тип фрактала (MODE_LOWER|MODE_UPPER) |//+----------------------------------------------------------------------------+double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
if (sy=="" || sy=="0") sy=Symbol();
double f=0;
int d=MarketInfo(sy, MODE_DIGITS), s;
if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;
for (s=2; s<100; s++) {
f=iFractals(sy, tf, mode, s);
if (f!=0) return(NormalizeDouble(f, d));
}
Print("FindNearFractal(): Фрактал не найден");
return(0);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 30.03.2008 |//| Описание : Установка объекта OBJ_HLINE горизонтальная линия |//+----------------------------------------------------------------------------+//| Параметры: |//| cl - цвет линии |//| nm - наименование ("" - время открытия текущего бара) |//| p1 - ценовой уровень (0 - Bid) |//| st - стиль линии (0 - простая линия) |//| wd - ширина линии (0 - по умолчанию) |//+----------------------------------------------------------------------------+void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (p1<=0) p1=Bid;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0);
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH , wd);
}
o
o usare le funzioni
intObjectFind( string name) //Поиск объекта с указанным именемdouble ObjectGet( string name, int prop_id) //Функция возвращает значение указанного свойства объекта
Grazie e buona fortuna a te artmedia70
Salve.
Come posso visualizzare sul grafico l'iscrizione sullo strumento corrente Profitto/perdita degli ordini aperti.
È difficile controllare nell'Expert Advisor se ha aperto posizioni o no (terminale on/off) e prendere il volume dell'ultimo lotto prima di chiudere il terminale.
Grazie.
Ciao, nessuno sa niente?
Se ho fatto dei trade passati, allora uso la funzione orderprofit e poi sommo tutta la storia dei trade.
Mi chiedo se qualcuno ha qualche risposta alla mia domanda.
C'è un difetto in questo codice. Qui, tolto dal contesto:
Il punto è che l'espressione
Pertanto, il valore del lotto sarà arrotondato a una cifra decimale.
Continuate a leggere, può essere d'aiuto.
Lo spero proprio. Grazie. Leggerò il thread di cui sopra per rafforzare questo punto. Non voglio lasciare vuoti.
Ciao, c'è qualcuno competente?
Beh, per come la vedo io è tutto elementare. Tutto ciò che serve è una conoscenza elementare.
1. Si fa un superamento degli ordini.
2. Controlla che l'ordine sia aperto, cioè che il tempo di chiusura dell'ordine sia relativo a zero.
3. Se l'ordine è aperto, visualizza i suoi dati necessari, profitto, tipo, ecc.
Se ho fatto dei trade passati, allora uso la funzione orderprofit e poi sommo tutta la storia dei trade.
Mi chiedo se qualcuno ha delle risposte alla mia domanda.
Copia l'intero codice nel tuo Expert Advisor
come questo
o
o usare le funzioni
per cercare un oggetto. Non c'è altro modo.No, funziona, ma il valore esce assolutamente dal soffitto
Prova a rimuovere le impostazioni dell'indicatore nel codice dell'EA. Poi le impostazioni saranno prese dal codice prescritto nell'indicatore.
Ho anche dei valori di sinistra, ho rimosso le impostazioni dal codice ed è tutto ok.