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

 
DhP:

Versuchen Sie es auf diese Weise:

Ich danke Ihnen. Ich werde es ausprobieren.
 

Nachmittags.

1. Wie drückt man das Ergebnis eines Geschäfts aus, d.h. war es gewinnbringend oder verlustbringend? Zum Beispiel, die letzte?

2. Wie macht man einen virtuellen Handel und berücksichtigt sein Ergebnis (Vorzeichen)?

 
inoy:

Nachmittags.

1. Wie drücken Sie das Ergebnis des Geschäfts aus, d.h. ob es profitabel oder unprofitabel war? Zum Beispiel, die letzte?

2. Wie macht man eine virtuelle Transaktion und verbucht ihr Ergebnis (Vorzeichen)?

1. Sehen Sie sich diese 2 Funktionen an:

isCloseLastPosByStop
isCloseLastPosByTake

2. Es gibt einen sehr einfachen Weg für einen virtuellen Handel. Erhöhen Sie Ihren Einzahlungsbetrag um das 100-fache, also, sagen wir, nehmen Sie statt der berüchtigten 1000 Pfund 100000. Und Lose einer virtuellen Position reduzieren auf die Grenze - auf 0,01, zum Beispiel, wenn die Arbeit Los, zum Beispiel, 10. 0,01 von 10 - das ist ein Zehntel von einem Prozent - völlig unmerkliche Verluste und Gewinne.

Handelsmarke: isLossLastPos

 
sss2019:

Helfen Sie mir, das Problem zu lösen, warum, wenn die Schleife nur 2 Durchläufe hat, i zuerst gleich 0 und dann sofort gleich 4 ist?

In diesem Skript wird die Meldung 0, 4 ausgegeben.

Nun, vielleicht ist es patamushta:

for(i=0,g=0,c=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    if(OrderMagicNumber() == MasterMagicNumber)     // а других точно нет?
      {
.............
      Alert(i);
.............
      }
.............
    }

Vielleicht ist es besser so:

for(i=0,g=0,c=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
    Alert(i);
    if(OrderMagicNumber() == MasterMagicNumber)
      {
      starttime = OrderOpenTime();
      ArrayResize(prices,ArraySize(prices)+TradesCount);
      if(OrderSelect(i+1,SELECT_BY_POS,MODE_TRADES))
      if(OrderMagicNumber() == MasterMagicNumber) endtime = OrderOpenTime();
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      times[i] = starttime;
      times[i+1] = endtime;
      tickets[i] = OrderTicket();
      symbol = OrderSymbol();
      while(g < TradesCount*(i+1))
        {
        if(OrderType() == OP_BUY)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()-LowOpen*Point;
            }else
            {
            prices[g] = prices[g-1]-step*Point;
            }
          }
        if(OrderType() == OP_SELL)
          {
          if(g == TradesCount*i)
            {
            prices[g] = OrderOpenPrice()+HighOpen*Point;
            }else
            {
            prices[g] = prices[g-1]+step*Point;
            }
          }
        g++;
        }
      }
    }
 
DmitriyN:

1. Sehen Sie sich diese 2 Funktionen an:

isCloseLastPosByStop
isCloseLastPosByTake

2. Für einen virtuellen Handel gibt es einen sehr einfachen Weg. Erhöhen Sie Ihren Einzahlungsbetrag um das 100-fache, also, sagen wir, nehmen Sie statt der berüchtigten 1000 Pfund 100000. Und Lose einer virtuellen Position reduzieren auf die Grenze - auf 0,01, zum Beispiel, wenn die Arbeit Los, zum Beispiel, 10. 0,01 von 10 - das ist ein Zehntel von einem Prozent - kaum spürbare Verluste und Gewinne.

Geschäftszeichen: isLossLastPos


Ich danke Ihnen. Aber es muss doch eine elegantere Möglichkeit für virtuelle Eingaben geben. "Erhöhen Sie die Einlage um den Faktor 100" - ich fürchte, diese Möglichkeit habe ich im wirklichen Leben nicht). Profis, lassen Sie sich das nicht entgehen!
 
inoy:

Ich danke Ihnen. Aber es muss doch eine elegantere Möglichkeit für virtuelle Eingaben geben. "Erhöhen Sie die Einlage um den Faktor 100" - ich fürchte, diese Möglichkeit habe ich im wirklichen Leben nicht). Profis, lassen Sie sich das nicht entgehen!

https://www.mql4.com/ru/search#!keyword=%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F&module=mql4_module_articles
 
Vinin:

https://www.mql4.com/ru/search#!keyword=%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%82%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F&module=mql4_module_articles

Ich danke Ihnen.
 
DhP:

Versuchen Sie dies:

bool GO = true;// глобальная переменная
//---------------------

if(GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= -100) {GO=false; return(+1);}//запретить повторный вход
//---------------
{OrderClose(.......); GO = true; }//открыть семафор при закрытии позиции.

Guten Tag, ich habe versucht, das Problem zu beheben, aber die Eule macht nur einen Handel, der am Stop-Loss geschlossen wird, und das war's. Keine anderen Geschäfte werden geöffnet.

Dateien:
 
artemka_1981:

Guten Tag.versucht zu beheben jetzt Eule macht nur ein Handel schließt am Stop-Loss und das ist es.keine anderen Trades öffnen.sagen Sie mir, was falsch ist

if(OrdersTotal()==0)GO=true;
 
// < 0 - Dn
// > 0 - Up
int Signal()
{
double RSI = iRSI(NULL,15,RSIperiod,RSI_price,SignalBar);
double Stoch = iStochastic(NULL,15,Stoch_K,Stoch_D,Stoch_slowing,Stoch_method,Stoch_price,Stoch_mode,SignalBar);
double CCI = iCCI(NULL,15,CCI_period,CCI_price,SignalBar);

double MA2 = iMA(NULL,15,ma2_period,ma2_shift,ma2_method,ma2_price,SignalBar);
double IchiA = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 3, SignalBar);
double IchiB = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 4, SignalBar); 

    if(GO && SignalType_1 && RSI >= 65 && Stoch >= 80 && CCI >= 100) {GO=false; return(+1);}//запретить повторный вход (+1);
    if(GO && SignalType_2 && Bid >= MA2 && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход return(+1);
    if(GO && SignalType_3 && Bid >= IchiA && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход (+1);
    
   
    
    if(GO && SignalType_1 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_2 && Ask <= MA2 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_3 && Ask <= IchiB && RSI <= 35 && Stoch <= 20&& CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    
    if(OrdersTotal()==0)GO=true;
    
    return(0);
}
DhP:

Hallo. Es funktioniert nicht. Tut mir leid. Es ist in Ordnung. Ich war nur verwirrt. Vielen Dank.