Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 554

 
Vinin:


Ich danke Ihnen vielmals!
 

splxgf: - Herzlichen Dank! Alles funktioniert wie am Schnürchen!

Hier ist der Breakeven-Code von Igor Kim, umgewandelt "splxgf:" anstelle von Punkten in Prozente:

//+----------------------------------------------------------------------------+
//| Autor : Kim Igor V. alias KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Version : 23.04.2009 |
//| Beschreibung: Verschieben der Stoppstufe auf verlustfrei |
//+----------------------------------------------------------------------------+
//| Parameter: |
//| sy - Instrumentenname ( "" - beliebiges Symbol, |
//| NULL - aktuelles Symbol) |
//| op - Operation ( -1 - beliebige Position) |
//| mn - MagicNumber ( -1 - beliebiger Magier) |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy=NULL, int op=-1, int mn=-1) {

double po, pp, PercentStep,MoveStoplossLevel,StoplossLevel;
int i, k=OrdersTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy==") && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {

po=MarketInfo(OrderSymbol(), MODE_POINT);

if (Auftragsart()==OP_BUY) {
PercentStep=(OrderTakeProfit()-OrderOpenPrice())/po/(138-23);
MoveStoplossLevel = OrderOpenPrice() + PercentStep*(76-23);
StoplossLevel = OrderOpenPrice() + PercentStep*(51-23);
if (OrderStopLoss()-OrderOpenPrice()<StoplossLevel*po) {
pp=MarketInfo(OrderSymbol(), MODE_BID);
if (pp-OrderOpenPrice()>MoveStoplossLevel*po) {
ModifyOrder(-1, OrderOpenPrice()+StoplossLevel*po, -1);
}
}

}


if (OrderType()==OP_SELL) {
PercentStep=(OrderTakeProfit()-OrderOpenPrice())/po/(138-23);
MoveStoplossLevel = OrderOpenPrice() - PercentStep*(76-23);
StoplossLevel = OrderOpenPrice() - PercentStep*(51-23)
if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<StoplossLevel*po) {
pp=MarketInfo(OrderSymbol(), MODE_ASK);
if (OrderOpenPrice()-pp>MoveStoplossLevel*po) {
ModifyOrder(-1, OrderOpenPrice()-StoplossLevel*po, -1);

}
}
}
}
}
}
}
}

//+----------------------------------------------------------------------------+

Zahlen:

138 ist der Take-Profit in % Fibonacci.

23 ist der offene Preis des Auftrags in % Fibonacci

76 ist % des Fibonacci-Rasters, wenn der Preis diesen Wert erreicht, wird der Stop-Loss auf 51% des Fibonacci-Rasters verschoben.

Funktion von e-MovingInWL2 Expert Advisor.

 
int start()
{

Trailing();


double Line11=iCustom(Symbol(), 0, "TDI Red Green", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, 4, 1);
double Line12=iCustom(Symbol(), 0, "TDI Red Green", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, 4, 2);
double Line21=iCustom(Symbol(), 0, "TDI Red Green", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type, 5, 1);

if (timeprev == Time[0]) return(0);
timeprev = Time[0];

ma0=iMA(NULL,0,10,0,MODE_SMA,PRICE_CLOSE,1);
ma1=iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,1);
ma2=iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,1);
ma3=iMA(NULL,0,800,0,MODE_SMA,PRICE_CLOSE,1);

if (CountBuy()>5 && Volume[0]==1 && Ask > ma0 && Ask > ma1 && Ask > ma3)
{
if (Line11>Level1&&Line12<Level1&&Line11>Line12)
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask-sl*Point, Ask+tp*Point, comment, Magic, 0, Blue);
}

if (CountSell()>5 && Volume[0]==1 && Bid < ma0 && Bid < ma1 && Ask < ma3)
{
if (Line11>Level2&&Line12>Level1&&Line11>Line12)
OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Ask+sl*Point,Ask-tp*Point, comment, Magic, 0, Red);
}

return(0);
}


Bitte helfen Sie mir, einen Fehler im Code mit dem Signal zum Öffnen von Aufträgen durch den TDI Red Green Indikator zu finden.

Der Prüfer öffnet keine oder nur ein Geschäft. Es werden keine Fehler gemeldet.

Ich habe die Puffer des Indikators korrekt angegeben.

Ich bin gerade lernen mql4 für ein paar Tage, ich bin ein Anfänger)))

Ich bin Ihnen im Voraus für Ihre Hilfe dankbar!
 
Ich stehe vor diesem Dilemma: Nehmen wir an, es gibt eine Schleife für:

int Array_1[][];
int Array_2[][];
int Array_3[][];
int Array_4[][];
 . . . 


start() {

   for(int k=1; k<=N; k++) {

      if(k==1) {
         Используем массив ARRAY_1
      }
      if(k==2) {
         Используем массив ARRAY_2
      }
      if(k==3) {
         Используем массив ARRAY_3
      }
      . . . 
   } // for(int k=1; k<=N; k++) {

} // start() {

Der darin enthaltene Parameter N ist variabel, was bedeutet, dass der Code jedes Mal, wenn er geändert wird, durch Hinzufügen (oder Entfernen) von "if"-Bedingungen (unter dem entsprechenden Array) überarbeitet werden muss.

Frage - ist es möglich, nur ein "if" zu verwenden, aber die Variable "to" in Array-Namen (oder etwas anderes) zu verwenden? D.h. etwas wie ARRAY_{k}. Ich weiß, dass wir Arrays durch Terminalvariablen ersetzen können, aber dies ist ein Extremfall. Gibt es eine solche Lösung für Arrays?
 
chief2000:
Ich stand vor diesem Dilemma: Angenommen, es gibt eine Schleife für:


Der darin enthaltene Parameter N ist variabel, was bedeutet, dass Sie jedes Mal, wenn Sie ihn ändern, den Code durch Hinzufügen (oder Löschen) von "if"-Bedingungen (unter dem entsprechenden Array) ändern müssen.

Frage - ist es möglich, nur ein "if" zu verwenden, aber die Variable "to" in Array-Namen (oder etwas anderes) zu verwenden? D.h. etwas wie ARRAY_{k}. Ich weiß, dass wir Arrays durch Terminalvariablen ersetzen können, aber dies ist ein Extremfall. Gibt es eine solche Lösung für Arrays?

Sie können, wenn es irgendwie ähnlich ist:

// Константы
#define   Version     "TT-Pod 1.2.6"
#define   MyError     4999
#define   Infinity    100000000.0
#define   Zero                0.00000001
#define   TypesTotal  24
// Глобальные переменные и массивы
int      LastBar,
         Visibility,
         Groups[2],
         MainGroup[2],
         OldMG[2],
         StumbleNumber[2];
double   QualityMax[2];
datetime DeadLine,
         OldStopLine,
         StartTime[2],
         NewTime;
color    ЦветЛиний[2],
         Цвет123[2],
         ЦветХорды[2];
string   NameTangent[2]     ={"RaisingTangent"     ,"ReducingTangent"     },
         NameTrend[2]       ={"RaisingTrend"       ,"ReducingTrend"       },
         NameBorder[2]      ={"RaisingBorder"      ,"ReducingBorder"      },
         NameLevel1[2]      ={"RaisingLevel_1_"    ,"ReducingLevel_1_"    },
         NameLevel12[2]     ={"RaisingLevel_2_"    ,"ReducingLevel_2_"    },
         NameLevel2[2]      ={"RaisingLevel_3_"    ,"ReducingLevel_3_"    },
         NameLevel22[2]     ={"RaisingLevel_4_"    ,"ReducingLevel_4_"    },
         NameMainLevel1[2]  ={"MainRaisingLevel_1" ,"MainReducingLevel_1" },
         NameMainLevel12[2] ={"MainRaisingLevel_3" ,"MainReducingLevel_3" },
         NameMainLevel2[2]  ={"MainRaisingLevel_2" ,"MainReducingLevel_2" },
         NameMainLevel22[2] ={"MainRaisingLevel_4" ,"MainReducingLevel_4" },
         NameTrace[2]       ={"RaisingTrace"       ,"ReducingTrace"       },
         NameAttention[2]   ={"RaisingAttention"   ,"ReducingAttention"   },
         NameSpiral[2]      ={"RaisingSpiral"      ,"ReducingSpiral"      },
         NameSpan[2]        ={"RaisingSpan"        ,"ReducingSpan"        },
         NameMainLevel0[2]  ={"MainRaisingLevel_0" ,"MainReducingLevel_0" },
         NameMainLevel5[2]  ={"MainRaisingLevel_5" ,"MainReducingLevel_5" },
         NameMainLevel6[2]  ={"MainRaisingLevel_6" ,"MainReducingLevel_6" },
         NameBaseLevel[2]   ={"RaisingBaseLevel"   ,"ReducingBaseLevel"   },
         Name123[2]         ={"RaisingTrendBreak"  ,"ReducingTrendBreak"  },
         NameSpiralBorder[2]={"RaisingSpiralBorder","ReducingSpiralBorder"},
         NameDirector[2]    ={"RaisingDirector"    ,"ReducingDirector"    },
         NameHorizont[2]    ={"RaisingHorizont"    ,"ReducingHorizont"    },
         NameStumble[2]     ={"RaisingStumble"     ,"ReducingStumble"     },
         РежимРаботы        =" ",
         TextTangent[2]     ={""                                  ,""},
         TextTrend[2]       ={""                                  ,""},
         TextTrace[2]       ={""                                  ,""},
         TextBorder[2]      ={""                                  ,""},
         TextLevel1[2]      ={""                                  ,""},
         TextLevel12[2]     ={""                                  ,""},
         TextLevel2[2]      ={""                                  ,""},
         TextLevel22[2]     ={""                                  ,""},
         TextSpan[2]        ={""                                  ,""},
         TextDirector[2]    ={"                                              Директорная ВТ"
                             ,"                                              Директорная НТ"},
         TextHorizont[2]    ={"                                              Горизонт ВТ"
                             ,"                                              Горизонт НТ"},
         Text123[2]         ={"Пробой ВТ"                         ,"Пробой НТ"},
         TextAttention[2]   ={"В! "                               ,"Н! "},
         TextSpiral[2]      ={"          ВТ"                      ,"          НТ"},
         TextSpiralBorder[2]={"               ВГр"                ,"               НГр"},
         TextMainLevel0[2]  ={"ВУр0"                              ,"НУр0"},
         TextMainLevel1[2]  ={"     ВУр1"                         ,"     НУр1"},
         TextMainLevel2[2]  ={"          ВУр2"                    ,"          НУр2"},
         TextMainLevel12[2] ={"",""},
         TextMainLevel22[2] ={"                    ВУр4"          ,"                    НУр4"},
         TextMainLevel5[2]  ={"                         ВУр5"     ,"                         НУр5"},
         TextMainLevel6[2]  ={"                              ВУр6","                              НУр6"},
         TextBaseLevel[2]   ={"                ВБУ"               ,"                НБУ"},
         TextStumble[2]     ={""                                  ,""};
// Внешние переменные
extern double  МинНаклонТренда         =0.0,       // Фильтры "ложных" трендовых
               МаксНаклонТренда        =Infinity;
extern string  Варианты="1=Hb, 2=Hb/H, 3=H, 4=V, 5=N";
extern int     КритерийВыбора          =5,
               МинБазовыйПериод        =1,
               МаксБазовыйПериод       =Infinity,
               БарНачала               =Infinity,  // Параметры отображения
               БарОкончания            =1,
               ПериодИмитацииТиков     =2000,
               СдвигИндикатораТиков    =10,
               ЗнакИндикатораТиков     =159,
               РазмерИндикатораТиков   =5,
               ТолщинаТрендовой        =3;
extern color   ЦветПоддержки           =Green,
               ЦветВосходящейХорды     =LimeGreen,
               Цвет123 ВТ               =LightYellow,
               ЦветСопротивления       =Red,
               ЦветНисходящейХорды     =HotPink,
               Цвет123 НТ               =LightYellow,
               ЦветВертикалей          =DimGray,
               ЦветИндикатораТиков     =DarkOrange;
extern bool    ОчиститьЭкран           =true,
               ПоказыватьВсе           =false,
               РежимОтладки            =true,      // Режим работы программы
               СтатическийРежим        =false,
               МоделироватьДинамику    =false,
               ПечататьПредупреждения  =false;
//-----------------------------------------------------------------------------
// Удаление созданных графических объектов
void ClearScreen(){
   int Dimension=2*TypesTotal;
   string Name, Pref[];
   Comment("                                                       "+
           "                                                       "+
           "                                                       ");
   ArrayResize(Pref,Dimension);
   Pref[ 0]=NameTangent[0];
   Pref[ 1]=NameTangent[1];
   Pref[ 2]=NameTrend[0];
   Pref[ 3]=NameTrend[1];
   Pref[ 4]=NameBaseLevel[0];
   Pref[ 5]=NameBaseLevel[1];
   Pref[ 6]=NameTrace[0];
   Pref[ 7]=NameTrace[1];
   Pref[ 8]=NameLevel12[0];
   Pref[ 9]=NameLevel12[1];
   Pref[10]=NameLevel22[0];
   Pref[11]=NameLevel22[1];
   Pref[12]=NameBorder[0];
   Pref[13]=NameBorder[1];
   Pref[14]=NameLevel2[0];
   Pref[15]=NameLevel2[1];
   Pref[16]=NameMainLevel12[0];
   Pref[17]=NameMainLevel12[1];
   Pref[18]=NameMainLevel22[0];
   Pref[19]=NameMainLevel22[1];
   Pref[20]=NameSpiralBorder[0];
   Pref[21]=NameSpiralBorder[1];
   Pref[22]=NameMainLevel2[0];
   Pref[23]=NameMainLevel2[1];
   Pref[24]=NameAttention[0];
   Pref[25]=NameAttention[1];
   Pref[26]=NameLevel1[0];
   Pref[27]=NameLevel1[1];
   Pref[28]=NameMainLevel1[0];
   Pref[29]=NameMainLevel1[1];
   Pref[30]=NameSpiral[0];
   Pref[31]=NameSpiral[1];
   Pref[32]=NameSpan[0];
   Pref[33]=NameSpan[1];
   Pref[34]=NameMainLevel0[0];
   Pref[35]=NameMainLevel0[1];
   Pref[36]=NameMainLevel5[0];
   Pref[37]=NameMainLevel5[1];
   Pref[38]=NameMainLevel6[0];
   Pref[39]=NameMainLevel6[1];
   Pref[40]=Name123[0];
   Pref[41]=Name123[1];
   Pref[42]=NameDirector[0];
   Pref[43]=NameDirector[1];
   Pref[44]=NameStumble[0];
   Pref[45]=NameStumble[1];
   Pref[46]=NameHorizont[0];
   Pref[47]=NameHorizont[1];
   int i, k=ObjectsTotal()-1;
   while( k>=0 ){
      Name=ObjectName(k);
      i=Dimension-1;
      while( i>=0 ){
         if( StringSubstr(Name,0,StringLen(Pref[i]))==Pref[i] ){
            if( !ObjectDelete(Name) ) {
               if( !РежимОтладки ) PlaySound("alert.wav");
               Print("***** "+Name+": ошибка удаления "+GetLastError()+" при очистке экрана");
         }  }
         i--;
      }
      k--;
   }
   return;
}
 
tara:

Sie können, wenn es irgendwie ähnlich ist:


Können Sie in Worten beschreiben, was gemeint war?
 
chief2000:

Können Sie in Worten beschreiben, was gemeint war?


Entschuldigung, ich war abgelenkt.

Der Array-Index wird zum Bestandteil des Bezeichners.

 

Hier ist ein einfacher Code.

Ich möchte, dass das Programm bei JEDER fünfzigsten Kerze eine vertikale Linie zeichnet.

wird das Programm eine vertikale Linie zeichnen.

DAS PROBLEM IST.

Das Programm zeigt eine vertikale Linie NUR AUF DER ERSTEN KRONE an (Vielfaches von 50).

Ich danke Ihnen.

double p;

int start()
{

p=Bars%50;
if(p<1)
ObjectCreate(0, OBJ_VLINE, 0, Time[1],0  );

                     
return(0);
}
 
tara:


Der Array-Index wird zum Bestandteil des Bezeichners.


Soweit ich weiß, wird Ihre Lösung in meinem Fall nicht funktionieren, aber sie hat mich auf eine Idee gebracht, die es wert ist, überprüft zu werden. Ich danke Ihnen!
 
solnce600:

Hier ist ein einfacher Code.

Ich will es bei JEDER fünfzigsten Kerze.

das Programm hat eine vertikale Linie angezeigt.

PROBLEM

Das Programm setzt eine vertikale Linie NUR in der ERSTEN ZEILE (Vielfaches von 50).

Ich möchte, dass es für jede fünfzigste Kerze derselbe Name ist.

Sie versuchen, mehrere Objekte mit demselben Namen zu erstellen, und das ist nicht möglich. Der Name muss einzigartig sein, wie die Zeit:

ObjectCreate(Time[i], OBJ_VLINE, 0, Time[i],0 );

Das ist das Wichtigste. Zweitens: Wo ist der Kreislauf? Wie wird das Skript die Kerzen zählen?