[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 13

 
alsu:
Von den proprietären Programmen, wahrscheinlich MS VisualStudio, gibt es auch freie Programme, CodeBlocks zum Beispiel ist recht gut.
Danke, ich denke, ich werde mit VISUAL C++ 2010 EXPRESS und CodeBlocks beginnen.
 
rustein:

Habe beschlossen, mit dem Lernen von C, C++, C# zu beginnen, wer kann einen guten Compiler und Editor empfehlen.

Ich danke Ihnen.


VERGESSEN

PERL

 
freeDRIVER:


NICHTS ANDERES WIRD VERGESSEN.

PERL

Danke, habe es gelesen, interessantes Projekt.
 

Leider hat nichts von alledem geholfen.

Die Frage https://www.mql5.com/ru/forum/138609/page9#edit_form ist nach wie vor aktuell.

Bitte um Hilfe!

 

Ich benötige einen Indikator, der die kleinste Kerze oder den kleinsten Balken für einen bestimmten Zeitraum anzeigt. z.B. auf dem 4H-Chart wird die kleinste Kerze oder der kleinste Balken für 5 Tage angezeigt.

Tage oder Stunden, die in den Einstellungen des Indikators festgelegt werden. Und markiert diesen Kerzenpfeil wie im Indikator Fraktale.

Oder so ähnlich.
 
Fox_RM:

Leider hat nichts von alledem geholfen.

Die Frage https://www.mql5.com/ru/forum/138609/page9#edit_form ist nach wie vor aktuell.

Bitte um Hilfe!

Bitte zeigen Sie mir den Code noch einmal mit den von Ihnen vorgenommenen Änderungen
 
Fox_RM:

Leider hat nichts von alledem geholfen.

Die Frage https://www.mql5.com/ru/forum/138609/page9#edit_form ist nach wie vor aktuell.

Bitte um Hilfe!

Sie haben bereits eine Menge Ratschläge erhalten. Erstens ist es für die Frage nicht korrekt, den ursprünglichen Code noch einmal in Ihren Beitrag einzufügen (ohne die von Ihnen vorgeschlagenen Anmerkungen bzw. Korrekturen). Zweitens müssen Sie einen eigenen Algorithmus entwickeln, um nach Fehlern zu suchen. Niemand hat es besser hinbekommen (innerhalb von MQL4), als Zwischenergebnisse zu drucken. Der Autor kann die logischen Fehler in erster Linie erkennen, da er der EINZIGE ist, der die Logik des von ihm geschriebenen Codes kennt... ;)))
 

Neueste Version:

//+------------------------------------------------------------------+
//|                                              Ti&Pi_Exp.mq4       |
//|                                        Copyright © 2012, FOX.RM  |
//|                                             fox.rm@mail.ru       |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2012, FOX.RM"
#property link      "fox.rm@mail.ru"

int start() {  
 
double MA1[],MA2[];
double delta,price,old_price,col_bar,sum_tick,sum_pip,TP_UP[20],TP_DN[20],TP_UPMin[20],TP_DNPl[20]; //---размерность массивов
int sum_pip_bay,sum_pip_sell,i=0,limit,k=0,old_sell=0,old_bay=0;
int count_plus,count_minus,raz,count;
datetime time_Bar; 

  ArrayResize(MA1,Bars);ArrayResize(MA2,Bars);

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам
for (i=0;i<count;i++)           //--- вроде так
{  
    price = Close[i]/Point;    
    delta = price-old_price;
          
    if(!time_Bar)time_Bar=Time[0];
    col_bar = iBarShift(NULL,0,time_Bar)-iBarShift(NULL,0,Time[i]);
    if (col_bar >= 1)
    
    {time_Bar=Time[i];sum_pip_bay=0;
    sum_pip_sell=0;sum_pip=0;
    old_bay=0;old_sell=0;sum_tick=0;
    count_plus=0;count_minus=0;}
     
     //---- Расчет UP
    if(delta>=0)
    {if(delta>100)delta=1;
    sum_pip_bay = delta + old_bay;   
    old_bay=sum_pip_bay;
    count_plus++;}  
    
     //---- Расчет Down
    if(delta<0)
    { sum_pip_sell = delta+old_sell;
     old_sell=sum_pip_sell;
    count_minus++;}
          
        sum_tick=count_plus+count_minus;
        sum_pip=sum_pip_bay+MathAbs(sum_pip_sell);
     
      //---
  
        if (MA1[i]>=0){TP_UP[i]=MA1[i];}else{TP_UPMin[i]=MA1[i];}
        if (MA2[i]<=0){TP_DN[i]=MA2[i];}else{TP_DNPl[i]=MA2[i];} 
             
//----
    old_price=price; 

//------
if(NewBar())
  { 
  
 MA1[i] = count_plus - sum_pip_bay;
 MA2[i] = count_minus - MathAbs(sum_pip_sell);
 
 //---- Условия на открытие сделки
 
 
 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask
   }    
   }                
   return(0);
}

//---- Функции
double Sredn(double ArrSr[])
{
double a=1,c,step=1/20;
for (int i=0;i<20;i++)                         //--- тут привел в соответствие
{if (ArrSr[i]==0){a*=1;}else{a*=MathAbs(ArrSr[i]);}}
c=MathPow(a, step);
  return(c);
}
//-------------
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}
 
Fox_RM:

Neueste Version:

double a=1,c,step=1/20;

1) die Schrittvariable ist Null. Geben Sie entweder 0,05 ein oder teilen Sie den Wert als 1./20

2) Danach wird versucht, den Handel zu öffnen, aber

OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20)

anstelle von 50 und 20 sollten Sie Stop-Loss- und Take-Profit-Levels festlegen (_absolute_)


P.S. Ich habe nur die grundlegenden Momente der Nicht-Öffnung betrachtet. Natürlich müssen noch viele Dinge optimiert und ergänzt werden.

 
Fox_RM:

Die neueste Version:

Was hat es mit diesem "Mazahismus" auf sich?

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам

Warum erklären Sie das nicht einfach ehrlich?

count = 20;

Und quälen Sie diese Arrays MA1[] und MA2[] nicht, indem Sie ihre Dimensionen auf einmal deklarieren:

double MA1[20],MA2[20];

Und damit:

 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask

Sie müssen zurück zu den Wurzeln der... des Wissens. Sie übergeben HUNDERTE von Pips an einen Handelsauftrag, und Sie müssen LEVELS übergeben!!! Und um online zu arbeiten, ist es notwendig, die NIVEAUS (Preis, SL und TP) zu NORMALISIEREN!!!

 if (Sredn(TP_UP)>=1.5)
OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble (Bid,Digits),2,NormalizeDouble (Ask+50*Point, Digits),NormalizeDouble(Ask-20*Point,Digits), 0, MAGIC);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)
OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),2,NormalizeDouble(Bid-50*Point,Digits),NormalizeDouble(Bid+20*Point,Digits), 0, MAGIC);  //--- на новом баре + Ask

Und noch etwas: Gewöhnen Sie sich von Anfang an als "Erwachsener" an - vergeben Sie Ihre Aufträge MAGIC!!! Sie werden es in Zukunft brauchen!!!