Fragen von einem "Dummy" - Seite 273

 
bagdarino:

die Kosten für z. B. 20 Kredite pro Monat, was ein Kredit ist und was er kostet.

1 Kredit = 1 $
 

Ein Paar muss in eine Zahl codiert werden. Auf MT4 komme ich aus dieser Situation heraus, indem ich zunächst das Array initialisiere:

string CurrName [35]={"","","","","","","","","","","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};

schreiben Sie dann das Paar in die Nummer, indem Sie es durch das Array laufen lassen:

for(int i=0; i<=6; i++)
  {string letter = StringSubstr(Symb,i,1);
   for(int j=10; j<=35;j++)
    {if(letter == CurrName[j])
     {text1=StringConcatenate(text1, j);
      break;
      }}}

Es funktioniert nicht mit MT5, da ich bereits beim Versuch, das Array zu initialisieren, eine Fehlermeldung erhielt:

Z" - zu viele Initialisierungen

Leider gibt es an dieser Stelle eine Lücke in meinem Wissen.

Bitte schlagen Sie mögliche Lösungen für dieses Problem vor. Vielleicht gibt es auch für MT4 einen schnelleren Weg, ich würde mich freuen, das zu erfahren.


Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - Документация по MQL5
 
Heroix:

Ein Paar muss in eine Zahl codiert werden. Auf MT4 komme ich aus dieser Situation heraus, indem ich zunächst das Array initialisiere:

dann schreibe ich das Paar in die Zahl, indem ich es durch das Array laufen lasse:

.........

Es funktioniert nicht mit MT5, weil ich schon beim Versuch, das Array zu initialisieren, eine Fehlermeldung erhielt:

Z" - zu viele Initialisierungen

Und Sie haben ein Array mit der Größe [35], in das der Buchstabe 'Z' nicht hineinpasst, worauf der Compiler Sie hinweist.

Leider gibt es an dieser Stelle eine Lücke in meinem Wissen .

Bitte schlagen Sie mögliche Lösungen für dieses Problem vor. Vielleicht gibt es auch für MT4 einen schnelleren Weg, ich würde mich freuen, das zu erfahren.

Über schnelle Wege. Programmieren ist wie Poesie. Man braucht nichts zu wissen außer Buchstaben. Der Rest ist Kreativität. Man hat ein Problem - man erfindet eine Lösung.

Und du beleidigst mich, indem du mir unterstellst, dass sich ein guter Programmierer von einem schlechten nur durch die Dicke eines gut gelesenen Nachschlagewerks unterscheidet .... :) Ich habe jetzt keine Lust zu helfen...

Fi!

 
MetaDriver:

Vapchepa 10+26 = 36. Und du hast ein Array der Größe [35]. Der Buchstabe 'Z' passt nicht durch, was der Compiler dir sagt.

Über schnelle Wege. Programmieren ist wie Poesie. Man braucht nichts zu wissen außer Buchstaben. Der Rest ist Kreativität. Du hast ein Problem - erfinde eine Lösung.

Und Sie beleidigen mich, indem Sie mir unterstellen, dass sich ein guter Programmierer von einem schlechten nur durch die Dicke eines gut gelesenen Nachschlagewerks unterscheidet .... :) Ich habe jetzt keine Lust zu helfen...

Fi!

Seltsam, aber irgendwie funktioniert der Code auf MT4. In der Schleife dort ist ja j<=36 im Original, das hier ist 35 "gezogen".

Danke, das Problem war tatsächlich die Wertedeklaration des Arrays. Ich deklariere Arrays einmal alle 100 Jahre auf diese Weise, bildlich gesprochen... urteilen Sie nicht zu hart.

Die letzten Zeilen sind Spekulation, mehr nicht. Ich schrieb fast direkt: Ich wusste nicht, was ich tun sollte, aus verschiedenen Gründen.

 
Heroix:

Seltsam, aber irgendwie funktioniert der Code auf MT4. In der Schleife dort ist ja j<=36 im Original, das hier ist 35 "gezogen".

Danke, das Problem war tatsächlich die Wertedeklaration des Arrays. Ich deklariere Arrays einmal alle 100 Jahre auf diese Weise, bildlich gesprochen... urteilen Sie nicht zu hart.

Ja.

Die letzten Zeilen sind Spekulation, mehr nicht. Ich schrieb fast direkt: Ich wusste nicht, was ich tun sollte, aus verschiedenen Gründen.

Schon gut, schon gut. Sagen wir einfach, ich habe diese... Vollmond, ja. Das ist heutzutage der letzte Schrei.

;)

 
papaklass:

Wer weiß, ob sich der Standpunkt des MC geändert hat:

1. Einführung der Ausnahmebehandlung (try {} catch() {}) . War "entschieden dagegen".

Nein

2. Einführung des foreach-Operators () {}.

? Nun, das ist ein bisschen viel Unsinn. Ich weiß nicht, worum ich bitten soll. Der Operator ist speziell für Container gedacht, deren Konzept in MQL überhaupt nicht existiert.

Es gibt nur Arrays, für die es perfekt durch eine reguläre Gabelung implementiert ist.

 
papaklass:

Wer weiß, ob sich der Standpunkt des MC geändert hat:

1. Einführung der Ausnahmebehandlung (try {} catch() {}) . War "entschieden dagegen".

2. Einführung des foreach-Operators () {} .

PS: Es ist nicht klar, warum der Betreiber auffiel?

Es ist hervorgehoben, weil es ein reserviertes Wort für gibt, und es wird darauf verwiesen.
 

Ich arbeite zu hart...

das Drehbuch:

#property script_show_inputs
//--- input parameters
input string   Symb0="EURUSD";
input double   Vol0=0.2;
input string   Symb1="GBPUSD";
input double   Vol1=0.3;
input string   Symb2="CADCHF";
input double   Vol2=0.4;

input bool     buy = true;

MqlTradeRequest TradeRequest[3];
MqlTradeResult  TradeResult[3];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  if(buy)
  {
  _OrderSend(TradeRequest[0],TradeResult[0],Symb0,ORDER_TYPE_BUY,Vol0,0,0.0,0.0,"EURUSD",0);
  _OrderSend(TradeRequest[1],TradeResult[1],Symb1,ORDER_TYPE_BUY,Vol1,0,0.0,0.0,"GBPUSD",0);
  _OrderSend(TradeRequest[2],TradeResult[2],Symb2,ORDER_TYPE_BUY,Vol2,0,0.0,0.0,"CADCHF",0);
  Comment(PositionsTotal());
  }
  //Sleep(5000);
  else
  {
  
  _OrderSend(TradeRequest[0],TradeResult[0],Symb0,ORDER_TYPE_SELL,Vol0,0,0.0,0.0,"EURUSD",0);
  _OrderSend(TradeRequest[1],TradeResult[1],Symb1,ORDER_TYPE_SELL,Vol1,0,0.0,0.0,"GBPUSD",0);
  _OrderSend(TradeRequest[2],TradeResult[2],Symb2,ORDER_TYPE_SELL,Vol2,0,0.0,0.0,"CADCHF",0);
  }
  
  Sleep(1000);
  _CloseAllPositions();
  }
//+------------------------------------------------------------------+

void _OrderSend(MqlTradeRequest &tradeRequest,
                MqlTradeResult  &tradeResult,
                string          symbol,
                ENUM_ORDER_TYPE type,
                double          volume,
                ulong           deviation,
                double          sl,
                double          tp,
                string          comment,
                int             magic)
{
  MqlTick price; SymbolInfoTick(symbol, price);
  
  tradeRequest.action   = TRADE_ACTION_DEAL;
  tradeRequest.symbol   = symbol;
  tradeRequest.type     = type;
  tradeRequest.volume   = volume;
  
  if(type==ORDER_TYPE_BUY)
    tradeRequest.price    = price.ask;
  if(type==ORDER_TYPE_SELL)
    tradeRequest.price    = price.bid;

  tradeRequest.deviation= deviation;
  tradeRequest.sl       = sl;
  tradeRequest.tp       = tp;
  tradeRequest.comment  = comment;
  tradeRequest.magic    = magic;
  
  OrderSendAsync(tradeRequest,tradeResult);
}


void _CloseAllPositions()
{
  Print("пробую закрытся");
  MqlTradeRequest tradeRequest;
  MqlTradeResult  tradeResult;
  MqlTick price;
  
  if(PositionsTotal()>0)
  {
    
    string symb="";
    
    for(int i=0;i<PositionsTotal();i++)
    {
      symb=PositionGetSymbol(i);
      PositionSelect(symb);
      SymbolInfoTick(symb, price);
      
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
      {
        tradeRequest.type =ORDER_TYPE_SELL;
        tradeRequest.price=price.bid;
      }
      else
      {
        tradeRequest.type =ORDER_TYPE_BUY;
        tradeRequest.price=price.ask;
      }
        tradeRequest.action   =TRADE_ACTION_DEAL;
        tradeRequest.symbol   = symb;
        tradeRequest.volume   = PositionGetDouble(POSITION_VOLUME);
        tradeRequest.deviation= 0;
        tradeRequest.sl       = 0.0;
        tradeRequest.tp       = 0.0;
        tradeRequest.comment  = "";
        tradeRequest.magic    = 0;
        
        OrderSend(tradeRequest,tradeResult);
    }
  }
}

Ich erhalte Fehlermeldungen:

2013.08.23 10:28:54 Trades '1421016': fehlgeschlagener Sofortverkauf 1.60 CADCHF zu 0.87721 [Ungültige Anfrage]
2013.08.23 10:28:54 Trades '1421016': fehlgeschlagener Sofortverkauf 1,20 GBPUSD zu 1,55836 [Ungültige Anfrage]
2013.08.23 10:28:54 Trades '1421016': fehlgeschlagener Sofortverkauf 0.80 EURUSD zu 1.33455 [Ungültige Anfrage]


Was ist das Problem?

 

Ich habe alles offen... Aber es wird nicht CADCHF schließen. (Server ist MetaQuotes Demo)

Ich habe die Richtung der for-Schleife geändert, jetzt ist alles in Ordnung, alles öffnet und alles schließt sich.

 
i_logic:

Ich habe alles offen... Aber es wird nicht CADCHF schließen. (Server - MetaQuotes Demo)

Ich habe die Richtung der for-Schleife geändert, jetzt ist alles in Ordnung, alles öffnet und alles schließt sich.

geändert in:

for(int i=PositionsTotal()-1;i>=0;i--)

Der Verschluss funktioniert also auch nicht.