[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 537

 
chief2000:

Ich habe eine Frage.
Kann ich dem Code eines benutzerdefinierten Indikators entnehmen, ob das Fenster, in dem er ausgeführt wird, gerade aktiv ist oder nicht?
Wenn zum Beispiel derselbe Indikator in zwei Fenstern läuft, muss er nur in dem Fenster funktionieren, in dem das Diagramm aktiv ist, und im zweiten Fenster inaktiv sein.

Ich danke Ihnen!

Einmal mehr hilft die Bibliothek:-)
 
Zhunko:
Wieder hilft die Bibliothek:-)
Ich danke Ihnen!
 
Guten Abend, ich habe hier einen schnellen Rollover des Roboters gestartet, und sogar plötzlich ohne Fehler procamped, und siehe da, er öffnet plötzlich zwei Aufträge auf einmal!!! Das heißt, ein Auftrag nach dem anderen, beim ersten und zweiten Tick. Hier ist der Code, ich werde ihn unten einfügen. Die Variable BUY gibt die Anzahl der bereits eröffneten Kaufaufträge an, und wenn sie größer als Null ist, d. h. auch nur ein Auftrag existiert, sollte er nicht eröffnet werden.
//+------------------------------------------------------------------+
//|                                                        антиб.mq4 |
//|                      Copyright © 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern double volume=0.01;extern double stoploss=12,takeprofit=12;extern int magic=50001,I=5;
int ticket;double volumee ; 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   volumee=volume;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
        
int start()
  {   int BUY;
  
//----

 for( int i=OrdersHistoryTotal() -1;i>=0;i--){
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); if (OrderMagicNumber( )== magic) { if(OrderSymbol()== Symbol()) {
      if(OrderType()==OP_BUY ) {   if ((OrderProfit( )-3*Point) <  OrderTakeProfit( ) && (OrderProfit( )+3*Point) >  OrderTakeProfit( ) ) { if( OrderTicket( ) == ticket ) {
               volumee = volumee+volumee;}}}}}}
if (volumee>volume*I){volumee=volume;}


              for ( i=OrdersTotal()-1;i>=0;i--)
   {
    if (OrderSelect(i, SELECT_BY_TICKET ) == true)    Alert ("Select error ", GetLastError( ) ) ;
     if(OrderMagicNumber( )== magic){
      if(OrderSymbol()== Symbol()) {
      if(OrderType()==OP_BUY ) {
                             BUY++;}}}}   
 if(BUY==0){

 ticket= OrderSend( Symbol(), OP_BUY, volumee, NormalizeDouble(( Ask),Digits),NormalizeDouble(( Point*3),Digits) , NormalizeDouble(( Ask-stoploss*Point),Digits), NormalizeDouble(( Ask+takeprofit*Point),Digits), NULL,  magic, 0, Red) ;}
 
 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Hier, zwei Haftbefehle! !
 

Wissen Sie, vielleicht habe ich an der for-Schleife herumgepfuscht, es gibt einen Auftrag, ich nehme noch einen ab und die Schleifenbedingung ist überhaupt nicht erfüllt. Ja, ja, so sieht es aus, und es sind genau zwei Bestellungen offen!

Leute, soll ich meine letzten Kommentare löschen?

Nein, ich habe noch zwei, und nach dem dritten oder vierten Häkchen schreibt Alert: Select error 4105,

Es scheint, dass der Auftrag nicht ausgewählt wurde und zunächst kein Fehler auftritt... Dies ist korrekt for( int i=0;i<=OrdersHistoryTotal();i++){

und so for( int i=0;i<=OrdersTotal();i++){

Und trotzdem gibt es zwei Aufträge.

Das war's, eine. Puh. ;


 
Der Fehler 4105 - Bestellung nicht ausgewählt - verschwindet nicht, funktioniert aber im Allgemeinen ordnungsgemäß.
 
Ivn:

Guten Tag, wie schreibt man einen Standard-Berater für einen anderen Zeitraum. Legen Sie diesen Indikator z.B. auf den 1-Stunden-Chart, der dann den 4-Stunden-Indikator anzeigt.

пытался //+------------------------------------------------------------------+
//| vv auf 4 uhr.mq4 |
//| Copyright © 2012, MetaQuotes Software Corp.
//| https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#Eigenschaftslink "https://www.metaquotes.net/"

#property indicator_chart_window
#Eigenschaft indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 LightSeaGreen
#property indicator_color3 LightSeaGreen
//---- Indikatorparameter
extern int BandsPeriod=20;
extern inttern BandsShift=0;
extern double BandsDeviations=2.0;
//---- Puffer
double MovingBuffer[];
double UpperBuffer[];
double LowerBuffer[];
//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int init()
{
//---- Indikatoren
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MovingBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexPuffer(1,ObererPuffer);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,LowerBuffer);
//----
SetIndexDrawBegin(0,BandsPeriod+BandsShift);
SetIndexDrawBegin(1,BandsPeriod+BandsShift);
SetIndexDrawBegin(2,BandsPeriod+BandsShift);
//----
zurück(0);
}
//+------------------------------------------------------------------+
Bollinger-Bänder //| Bollinger-Bänder |
//+------------------------------------------------------------------+
int start()
{
int i,k,counted_bars=IndicatorCounted();
doppelte Abweichung;
double sum,oldval,newres;
int B=iBars( NULL,PERIOD_H4);
double C=iClose(NULL,PERIOD_H4,0);
//----
if(B <=BandsPeriod) return(0);
//---- anfänglicher Nullpunkt
if(gezählte_Balken<1)
for(i=1;i<=BandsPeriod;i++)
{
MovingBuffer[B-i]=EMPTY_VALUE;
ObererPuffer[B-i]=EMPTY_VALUE;
UntererPuffer[B-i]=EMPTY_VALUE;
}
//----
int limit=B-gezählte_Takte;
if(counted_bars>0) limit++;
for(i=0; i<limit; i++)
MovingBuffer[i]=iMA(NULL,PERIOD_H4,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
i=B-BandsPeriode+1;
if(gezählte_Balken>BandsPeriod-1) i=B-gezählte_Balken-1;
while(i>=0)
{
Summe=0,0;
k=i+BänderPeriode-1;
oldval=MovingBuffer[i];
while(k>=i)
{
newres=C[k]-oldval;
sum+=newres*newres;
k--;
}
Abweichung=BänderAbweichungen*MathSqrt(Summe/BänderZeitraum);
UpperBuffer[i]=oldval+deviation;
LowerBuffer[i]=oldval-deviation;
i--;
}
//----
zurück(0);
}
//+------------------------------------------------------------------+

hat nicht funktioniert

this newres=C[k]-oldval;- '[' - unerwartetes Token

Der Bollinger Bands Indikator.


Anstelle von C[k] wird iClose(NULL,PERIOD_H4,k) eingefügt;

Ich habe jedoch eine Möglichkeit gefunden, das 1-Uhr-Diagramm und die 4-Uhr-Linie auf eine natürlichere Weise anzuzeigen.
Wenn ich diesen Code in ein Diagramm übertrage, sehe ich, dass der Preis den Kanal verlässt; es scheint, dass das Bollinger Band Diagramm bei 4 Uhr nicht mit der Zeitlinie verbunden ist

vielen Dank im Voraus

 

Leute, könnt ihr mir aus Erfahrung sagen... Wählte ein Unternehmen zu mieten VPS für den Handel über MT4-Client-Terminal, interessiert, wie viel Verkehr im Durchschnitt verbraucht eine laufende Terminal, zum Beispiel mit zehn sops? Es wird mehrere Terminals geben, die... Damit ich aus den angebotenen Datentarifen den passenden auswählen kann:

P.S. Sie haben einen Tarif, der auf dem Gesamtverkehr basiert, d.h. eingehend + ausgehend.

 

Kolleginnen und Kollegen, die Antwort wissen:

Ich habe eine Strategie-Tester auf dem gleichen Zeitrahmen (01.05.2011 - 27.01.2012), EURUSD Währungspaar, auf Stunde Bars (H1), von einem DC (Alpari), und die gleichen Berater, aber auf verschiedenen Computern (Laptop, Desktop) gibt entgegengesetzte Ergebnisse! Auf dem PC - $2000, auf dem Laptop +3000. Und dort, und dort 2-3 Mal überprüft.

Bitte teilen Sie mir die Ursache mit und was zu tun ist und / oder geben Sie mir einen Link, wo das zum Thema nachgelesen werden kann.
 
Sersad:

Kolleginnen und Kollegen, wer kennt die Antwort:

Ich habe eine Strategie-Tester auf dem gleichen Zeitintervall (01.05.2011 - 27.01.2012), das Währungspaar EURUSD, auf der Stunde Bars (H1), von einem DC (Alpari), und die gleichen Expert Advisor, aber auf verschiedenen Computern (Laptop, Desktop) gibt entgegengesetzte Ergebnisse! Auf dem PC - $2000, auf dem Laptop +3000. Und dort, und dort 2-3 Mal überprüft.

Bitte teilen Sie mir die Ursache mit und was zu tun ist und / oder geben Sie mir einen Link, wo das zum Thema nachgelesen werden kann.


Ich war selbst einmal in diese Situation verwickelt... hatte eine ähnliche: 1. Terminal wurde mit Metacquotes installiert, 2. mit Alparey, Historie auch dementsprechend, es gab erhebliche Abweichungen beim Testen der gleichen Eule, konnte lange Zeit nicht herausfinden, was falsch war.

1. Laden Sie die Terminals von Alpari herunter. Laden Sie die Alpari-Quotierungshistorie für das Instrument herunter und dieses Fenster erscheint:

Wenn die Anzeige nicht erscheint, nachdem Sie F2 und anschließend "Download" gedrückt haben, laden Sie den Verlauf des Geräts herunter. Wenn Sie dieses Fenster nicht sehen, nachdem Sie F2 und anschließend "Download" gedrückt haben, wird der Preisverlauf nicht von Alpari heruntergeladen.

2. Stellen Sie im Strategietester alle Optionen gleich ein und überprüfen Sie den Spread, indem Sie auf die Schaltfläche "Symboleigenschaften" klicken. Überprüfen Sie die Streuwerte im Strategietester, indem Sie auf die Schaltfläche "Symboleigenschaften" klicken.

Bevor Sie das tun, löschen und laden Sie den Kursverlauf für das Instrument, das Sie interessiert, und überprüfen Sie den Testzeitraum: im Screenshot H4 - damit er in beiden Fällen derselbe ist.