[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 257
Können Sie mir sagen, wie ich die Bedingung für den Tester festlegen kann, um die Bar-Nummer des unteren Zeitrahmens im Text zu bestimmen?
Zum Beispiel: Der Tester beginnt mit H1, dann bestimmt er die Startzeit der n-ten Kerze im Textframe, und der nächste Schritt ist, die Nummer der Kerze zu bestimmen, die zur gleichen Zeit begann, aber durch den Zeitrahmen darunter. iBarShift schreibt immer 0. Der für die Taktberechnung zuständige Block befindet sich weiter unten:
Das ist nicht der richtige Weg. Im Tester müssen Sie die Eule mit der in dieser Eule verwendeten Mindest-TF zu den Eröffnungspreisen ausführen. Es ist besser, die Eule auf den offenen Minuten laufen zu lassen. Und es ist besser, die TF ausdrücklich zu verschreiben!
Ich möchte einen Multi-Timeframe-MA erstellen, der seine Farbe ändert, wenn sich der Trend ändert. Ich habe die Durchschnittspreisanzeige von anderen Zeitrahmen gemacht, aber ich weiß nicht, wie ich das Problem mit dem Farbwechsel lösen kann.
//+------------------------------------------------------------------+//| MA-MTFC.mq4 |//| Copyright 2012, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2012, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"#property indicator_chart_window#property indicator_buffers 3#property indicator_color1 Yellow#property indicator_color2 Green#property indicator_color3 Red//+------------------------------------------------------------------+externint MA_TF=1440;
externint MA_Period=89;
externint MA_Shift=0;
externint MA_Method=2;
externint MA_AP=0;
//+------------------------------------------------------------------+double Buffer_Yellow[];
double Buffer_Lime[];
double Buffer_Red[];
string Symb;
double MA;
int init()
{
Symb=Symbol();
//---if (MA_TF != 1)
if (MA_TF != 5)
if (MA_TF != 15)
if (MA_TF != 30)
if (MA_TF != 60)
if (MA_TF != 240)
if (MA_TF != 1440)
if (MA_TF != 10080)
if (MA_TF != 43200)
if (MA_TF != 0)
return;
//---SetIndexBuffer(0,Buffer_Yellow);
SetIndexBuffer(1,Buffer_Lime);
SetIndexBuffer(2,Buffer_Red);
//---SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
//---return(0);
}
int deinit()
{
return(0);
}
int start()
{
double MA;
int counted_bars=IndicatorCounted();
int limit=Bars-counted_bars-1;
if (limit>1)
limit=Bars-1;
for(int i=limit-1;i>=0;i--)
{
int pos=iBarShift(NULL, MA_TF, Time[i]);
MA=iMA(Symb,MA_TF,MA_Period,MA_Shift,MA_Method,MA_AP,pos);
Buffer_Yellow[i]=MA;
Buffer_Lime[i]=MA;
Buffer_Red[i]=MA;
if(Buffer_Yellow[i]>Buffer_Yellow[i+1])
{
Buffer_Red[i]=EMPTY_VALUE;
}
elseif(Buffer_Yellow[i]<Buffer_Yellow[i+1])
{
Buffer_Lime[i]=EMPTY_VALUE;
}
else
{
Buffer_Red[i]=EMPTY_VALUE;
Buffer_Lime[i]=EMPTY_VALUE;
}
}
return(0);
}
Roman.: Das ist nicht der richtige Weg. Im Tester müssen Sie die Eule mit der in dieser Eule verwendeten Mindest-TF zu den Eröffnungspreisen ausführen. Es ist besser, die Eule auf den offenen Minuten laufen zu lassen. Und es ist besser, die TF ausdrücklich zu verschreiben!
Roman, ich versuche, den Indikator im Strategy Tester anzeigen zu lassen. Der Indikator verwendet niedrigere Zeitrahmen für die Analyse.
FAQ: Es wäre besser, wenn Sie den vollständigen Code anzeigen und ihn über die Schaltfläche "SRC" einfügen könnten.
OK, ich werde versuchen, diesen Beitrag mit Code zu versehen.
Ich weiß eigentlich, was ich am Ende erreichen will - ich handele schon lange, aber mit dem Programmieren habe ich erst angefangen, als ich genau wusste, was ich programmieren will.
Mein Ziel ist es nun, einen grünen Pfeil für jeden Balken zu erhalten, der oberhalb aller drei Slips schließt, und einen roten Pfeil für jeden geschlossenen Balken, der unterhalb aller drei Slips schließt, und nur für Balken, die nach dem Anhängen an das Diagramm geschlossen werden. Ich bin nicht an der aktuellen Bar interessiert.
Ich möchte, dass diese Pfeile im Diagramm angezeigt werden, während der Indikator daran angehängt ist und dann entfernt wird.
Ich zeichne die Schieberegler jetzt nur zur Verdeutlichung und werde sie dann aus dem EA entfernen.
Jetzt haben wir einige Schieberegler und Pfeile, aber sie erscheinen und verschwinden jetzt und erscheinen über falschen Balken. Das ist es, was ich nicht verstehe.
Ich glaube, ich habe etwas mit j oder j+1 in den Zeilen 106-111 verwechselt und weiß nicht, an welches Element ich sie binden soll.
Danke, wenn Sie mir einen Tipp geben können.
Aus irgendeinem Grund funktioniert die SRC-Schaltfläche nicht. Ich werde versuchen, die Datei als normale mq4-Datei einzufügen.
Guten Tag zu diesem Thema! Der Indikator kompiliert, aber er zeichnet nichts, und ich weiß nicht, was falsch ist, was ich denken soll, wie ich nach einem Fehler suchen soll. Wie auch immer, der Code funktionierte, ich fügte eine Funktion mit minimalen Änderungen hinzu, aber jetzt tut er gar nichts mehr!!!
Vielleicht liegt das Problem irgendwo in den Deklarationen, die mit dem Gitternetz beginnen, oder vielleicht bin ich zu langsam und bringe es durcheinander... Es hat funktioniert!
//+------------------------------------------------------------------+//| ИндюкДимонакомпил.mq4 |//| Copyright 2012, MetaQuotes Software Corp. |//| http://www.metaquotes.net |//+------------------------------------------------------------------+#property copyright "Copyright 2012, MetaQuotes Software Corp."#property link "http://www.metaquotes.net"#import "user32.dll"int PostMessageA(int hWnd,int Msg,int wParam,string lParam);
#import#define WM_COMMAND 0x0111int delimiter = 0;
#property indicator_chart_windowdouble ВерхняячертаBuffer1[];
double НижняячертаBuffer2[];
double СинняячертаBuffer3[];
double вершина;
double основание_первого_снижения;
double начало;
double вершина_волны_3;
externint T=4,K=200;
int timeframe, start ;
int бар_вершина ;
int бар_основание_первого_снижения;
int бар_начало;
int pereklutsatel;
double naklon,linija2; int P;externint RO=49;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicators//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
int counted_bars=IndicatorCounted();
int limit=Bars-counted_bars-1;
for (int i=limit;i>=0;i--) {
//----for ( int J=0;J<=RO;J++){
//----// for(int i=Bars; i>=0;i--)
i=Bars;
бар_вершина=iHighest( NULL, timeframe, MODE_HIGH, K, start ) ;
вершина =High[ бар_вершина ];
бар_основание_первого_снижения=iLowest( NULL, timeframe, MODE_LOW,NormalizeDouble ( бар_вершина/2,0), start ) ;
основание_первого_снижения=Low[ бар_основание_первого_снижения ];
бар_начало=iLowest( NULL, timeframe, MODE_LOW,NormalizeDouble (бар_вершина*1.5,0), бар_вершина ) ;
начало=Low[ бар_начало ];
if(начало>основание_первого_снижения){naklon=(начало-основание_первого_снижения)/(бар_начало-бар_основание_первого_снижения);
НижняячертаBuffer2[бар_начало]=начало;linija2=начало;for(i=бар_начало-1;i>=0;i--){linija2=linija2-naklon;
НижняячертаBuffer2[i]=linija2;
}
НижняячертаBuffer2[бар_основание_первого_снижения]=основание_первого_снижения;}
for (i=0;i<100;i++){ СинняячертаBuffer3[i]= Open[i];}
for (i=330;i<500;i++){ СинняячертаBuffer3[i]= Open[i];}
ВерхняячертаBuffer1[бар_начало]=начало;
double точка4; int бар_точка4; бар_точка4=iHighest( NULL, timeframe, MODE_HIGH, бар_основание_первого_снижения, 3 ) ;
точка4 =High[ бар_точка4 ];
if(вершина>точка4){naklon=(начало-точка4)/(бар_начало-бар_точка4);
double linija1=начало;for(i=бар_начало-1;i>=0;i--){linija1=linija1-naklon;ВерхняячертаBuffer1[i]=linija1; }}
double vulf=НижняячертаBuffer2[0];
if ( vulf==Ask&&vulf==Bid)vulf=1;
else{ for (vulf=vulf+Point*10; vulf==НижняячертаBuffer2[0];vulf=vulf-Point){
if ( vulf==Ask&&vulf==Bid){vulf=1;}}
for (vulf=vulf-Point*10; vulf==НижняячертаBuffer2[0];vulf=vulf+Point){
if ( vulf==Ask&&vulf==Bid)vulf=1;}
}
if (vulf==1){Comment (" Есть вульв!!! " , " timeframe " , timeframe);return(0); }
if (vulf!=1&&pereklutsatel==1) {
if(delimiter<3){delimiter++;Comment(delimiter);return(0);}
delimiter=0;
fChangePeriod();P++;
} } }
//----return(0);
}
//+------------------------------------------------------------------+void fChangePeriod(){int ii,hwd = WindowHandle(Symbol(),Period());
switch(Period()){
casePERIOD_W1 : ii = 33134; break; //PERIOD_D1;casePERIOD_D1 : ii = 33136; break; //PERIOD_H4;casePERIOD_H4 : ii = 33135; break; //PERIOD_H1;casePERIOD_H1 : ii = 33140; break; //PERIOD_M30;casePERIOD_M30 : ii = 33139; break; //PERIOD_M15;casePERIOD_M15 : ii = 33138; break; //PERIOD_M5;casePERIOD_M5 : ii = 33137; break; //PERIOD_M1;casePERIOD_M1 : ii = 33141; break; //PERIOD_W1;
}
PostMessageA(hwd, WM_COMMAND, ii, 0);
return;
}
Können Sie mir sagen, wie ich die Bedingung für den Tester festlegen kann, um die Bar-Nummer des unteren Zeitrahmens im Text zu bestimmen?
Zum Beispiel: Der Tester beginnt mit H1, dann bestimmt er die Startzeit der n-ten Kerze im Textframe, und der nächste Schritt ist, die Nummer der Kerze zu bestimmen, die zur gleichen Zeit begann, aber durch den Zeitrahmen darunter. iBarShift schreibt immer 0. Der für die Taktberechnung zuständige Block befindet sich weiter unten:
Yuri, können Sie etwas zu meiner obigen Frage sagen?
Skript prüfen
Ergebnis
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 1 TimeOpen: 00:00 Bar: 1057
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 5 TimeOpen: 00:00 Bar: 212
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 15 TimeOpen: 00:00 Bar: 70
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 30 TimeOpen: 00:00 Bar: 35
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 60 TimeOpen: 00:00 Bar: 17
2012.07.17 20:42:45 VininI_CheckTime EURUSD,Daily: TimeFrame: 240 TimeOpen: 00:00 Bar: 4
Ein Ratschlag, bitte:
Ich möchte einen Multi-Timeframe-MA erstellen, der seine Farbe ändert, wenn sich der Trend ändert. Ich habe die Durchschnittspreisanzeige von anderen Zeitrahmen gemacht, aber ich weiß nicht, wie ich das Problem mit dem Farbwechsel lösen kann.
Das ist nicht der richtige Weg. Im Tester müssen Sie die Eule mit der in dieser Eule verwendeten Mindest-TF zu den Eröffnungspreisen ausführen. Es ist besser, die Eule auf den offenen Minuten laufen zu lassen. Und es ist besser, die TF ausdrücklich zu verschreiben!
Es wäre besser, wenn Sie den vollständigen Code anzeigen und ihn über die Schaltfläche "SRC" einfügen könnten.
OK, ich werde versuchen, diesen Beitrag mit Code zu versehen.
Ich weiß eigentlich, was ich am Ende erreichen will - ich handele schon lange, aber mit dem Programmieren habe ich erst angefangen, als ich genau wusste, was ich programmieren will.
Mein Ziel ist es nun, einen grünen Pfeil für jeden Balken zu erhalten, der oberhalb aller drei Slips schließt, und einen roten Pfeil für jeden geschlossenen Balken, der unterhalb aller drei Slips schließt, und nur für Balken, die nach dem Anhängen an das Diagramm geschlossen werden. Ich bin nicht an der aktuellen Bar interessiert.
Ich möchte, dass diese Pfeile im Diagramm angezeigt werden, während der Indikator daran angehängt ist und dann entfernt wird.
Ich zeichne die Schieberegler jetzt nur zur Verdeutlichung und werde sie dann aus dem EA entfernen.
Jetzt haben wir einige Schieberegler und Pfeile, aber sie erscheinen und verschwinden jetzt und erscheinen über falschen Balken. Das ist es, was ich nicht verstehe.
Ich glaube, ich habe etwas mit j oder j+1 in den Zeilen 106-111 verwechselt und weiß nicht, an welches Element ich sie binden soll.
Danke, wenn Sie mir einen Tipp geben können.
Aus irgendeinem Grund funktioniert die SRC-Schaltfläche nicht. Ich werde versuchen, die Datei als normale mq4-Datei einzufügen.
Skript prüfen
Ich habe mich entschlossen, Ihren Code zu ändern und eine Prüfung für meine Zwecke vorzunehmen (ich habe sie auf H1 ausgeführt).
Und hier ist sie
Ich habe mich entschlossen, Ihren Code zu ändern und eine Prüfung für meine Zwecke vorzunehmen (ich habe sie auf H1 ausgeführt).
Und das ist es, was ich bekommen habe
Sie checken den Tester ein, indem Sie die Preise öffnen. Roman hat also schon geschrieben, wie man es macht.
Schlusskurs des vorherigen Balkens Close[1]
Guten Tag zu diesem Thema! Der Indikator kompiliert, aber er zeichnet nichts, und ich weiß nicht, was falsch ist, was ich denken soll, wie ich nach einem Fehler suchen soll. Wie auch immer, der Code funktionierte, ich fügte eine Funktion mit minimalen Änderungen hinzu, aber jetzt tut er gar nichts mehr!!!
Vielleicht liegt das Problem irgendwo in den Deklarationen, die mit dem Gitternetz beginnen, oder vielleicht bin ich zu langsam und bringe es durcheinander... Es hat funktioniert!