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

 
Guten Abend. Ich würde gerne wissen, ob jemand den Indikator für die Verteilung von Trades nach Preisniveaus in einem bestimmten Zeitrahmen verwendet, der von http://fxcoder.ru/indicators/tpo heruntergeladen werden kann. Wenn ja, wie kann sie richtig analysiert werden? Haben Sie irgendwelche Informationen darüber?
 
artemka_1981:
Jetzt beim Testen nicht öffnen einen einzigen Handel in das Protokoll schreibt Open_BuyS_SellS EURUSD,Daily: OrderSend Fehler 131

Fehler 131 ist die falsche Lautstärke. Versuchen Sie es zum Beispiel mit Lot 1. Es kann sein, dass Sie nicht mit 0,01 Lot eröffnen dürfen.

ERR_INVALID_TRADE_VOLUME131Falsches Volumen
 
ilunga:

Fehler 131 ist die falsche Lautstärke. Versuchen Sie es zum Beispiel mit Lot 1. Es kann sein, dass Sie nicht mit 0,01 Lot eröffnen dürfen.

ERR_INVALID_TRADE_VOLUME131Falsches Volumen
//+------------------------------------------------------------------+
//|                                                Open_Buy_Sell.mq4 |
//|                                                                  |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#define magic 999
extern bool Buy = true  ; //  true - разрешено покупать
extern bool Sell = true  ; // true - разрешено продавать
#property link      "http://www.metaquotes.net"
extern double  _lots         = 1;
extern int     _takeProfit   = 1200;
extern int      maxpos       = 1;     // количество поз
extern bool    _trailingStop = true;
//+------------------------------------------------------------------+

int start()
  {
   double _slBuy=0.0,_slSell=0.0, _tpBuy=0.0, _tpSell=0.0, _opBuy=0.0, _opSell=0.0;

//if (iVolume(Symbol(),PERIOD_D1,0)>1) return;
//     if (Volume[0]>1) return;
     if (_trailingStop){ 
     _TrailingStop();
      }
   _opBuy=NormalizeDouble(iHigh(Symbol(),0,1), Digits);
   _slBuy=NormalizeDouble(iLow(Symbol(),PERIOD_D1,1), Digits);
   _tpBuy=NormalizeDouble(Ask+_takeProfit*Point, Digits);
      if ( _opBuy<Ask && CountPos(1)<maxpos)
       if(barOpen(OP_BUYSTOP)==1 ||barOpen(OP_BUY)==1 )
        OrderSend(Symbol(),OP_BUYSTOP,_lots,_opBuy,15,_slBuy,_tpBuy,"Open_Buy_Sell",0,Green);

   _opSell=NormalizeDouble(iLow(Symbol(),0,1), Digits);
   _slSell=NormalizeDouble(iHigh(Symbol(),PERIOD_D1,1), Digits);
   _tpSell=NormalizeDouble(Bid-_takeProfit*Point, Digits);
     if (_opSell>Bid && CountPos(0)<maxpos)
      if(barOpen(OP_SELLSTOP)==1 ||barOpen(OP_SELL)==1 )
       OrderSend(Symbol(),OP_SELLSTOP,_lots, _opSell,15,_slSell,_tpSell,"Open_Buy_Sell",0,Red);
//----
   return(0);
  }
//+------------------------------------------------------------------+  
 //Проверяем количесвто позиций.
   int CountPos(int type) 
{//Описание http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=66

    
int i;
int col;
int count=0 ;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()== magic){count++;}
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()== magic){count++;}
         }
       }   
return(count);
}
//+------------------------------------------------------------------+
void _TrailingStop(){
   int i;
   double _stopLossSellF=NormalizeDouble(iHigh(Symbol(),0,1), Digits),
          _stopLossBuyF=NormalizeDouble(iLow(Symbol(),0,1), Digits);
   if (OrdersTotal()>0){
      for (i=OrdersTotal()-1; i>=0; i--){
         if (OrderSelect(i, SELECT_BY_POS)){
            if (OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
             
               if (OrderType()==OP_BUY && OrderOpenPrice() < _stopLossBuyF){
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossBuyF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
           
               if (OrderType()==OP_SELL && OrderOpenPrice() > _stopLossSellF && _stopLossSellF!=0.0){
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossSellF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
            }
         }
      }
   }
return;
}
int barOpen(int ty)
{
datetime tim=0;
 for(int i=0; i<=OrdersTotal(); i++)
    {  
       if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
       if(OrderSymbol() !=Symbol()|| OrderMagicNumber()!= magic|| OrderType()!=ty) continue; 
       if(tim<OrderOpenTime())        
          tim=OrderOpenTime();
   }
 for(i=0; i<=OrdersHistoryTotal(); i++)
    {  
       if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
       if(OrderSymbol() !=Symbol()|| OrderMagicNumber()!= magic|| OrderType()!=ty) continue; 
       if(tim<OrderOpenTime())        
          tim=OrderOpenTime();
   }
 
if(tim<iTime(Symbol(),PERIOD_D1,0)) return(1);
 return(0);
}
Nachmittags. Schreibt jetzt Open_BuyS_SellS EURUSD,H4: OrderSend Fehler 3

 
artemka_1981:
Nachmittags. Schreibt jetzt Open_BuyS_SellS EURUSD,H4: OrderSend Fehler 3

Fehlercodes lesen
 
artemka_1981:
Guten Tag. Jetzt heißt es Open_BuyS_SellS EURUSD,H4: OrderSend error 3

Siehe Hilfe für OrderSend-Parameter und Fehlercodes

3 - falsche Parameter.

Sie haben einen Fehler gemacht und anstelle von datetime expiration colour arrow_color geschrieben

 
ilunga:

Siehe Hilfe für OrderSend-Parameter und Fehlercodes

3 - falsche Parameter.

Sie haben einen Fehler gemacht und anstelle von datetime expiration colour arrow_color geschrieben

Es tut mir leid für dumme Fragen, dies ist mein erster EA, den ich versuche, selbst zu schreiben, alle meine Probleme begannen, als ich die Trail-Funktion hinzufügte, deshalb wandte ich mich an Sie, um Hilfe bei der Lösung meiner Fehler zu erhalten
 

Hilfe wer weiß!!!!


Die Essenz der Strategie: Einstieg durch stochastisches Signal (5,14,3), Ausstieg ebenfalls durch stochastisches Signal, aber mit einer anderen Periode (5,3,3). Ich verstehe nicht, wie man einen Ausstieg durch die Stochastik und nicht durch ein umgekehrtes Signal vornehmen kann.
Ich habe ein Problem und ich habe keine Ahnung, wie es gelöst werden kann, ich werde versuchen, zu erklären.
Also, in dem Code, den ich gepostet habe, gibt es 2 Funktionen
//+------------------------------------------------------------------+
//| подготовить массив тикетов для закрытия |
//+------------------------------------------------------------------+
void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9])
{
int size=ArrayRange(arrayTickets,0);
//----
if (size==0) return;

int i,type,ticket,closeSize;
for (i=0;i<size;i++)
{
type=arrayTickets[i][1];
// если тип ордера не рыночный, то пропускаем
if (type>OP_SELL) continue;

if (Revers) // перевернем тип рыночного ордера
{
if (type==OP_BUY) type=OP_SELL; else type=OP_BUY;
}

// тут решаем для каждого открытого ордера его судьбу
// оставить в рынке или добавить в массив на закрытие
if (type==OP_BUY)
{
//
// код разрешающий оставить покупку

// как пример
if (signal==OP_BUY) continue;
}

if (type==OP_SELL)
{
//
// код разрешающий оставить продажу

// как пример
if (signal==OP_SELL) continue;
}

closeSize=ArrayRange(ticketsClose,0);
ArrayResize(ticketsClose,closeSize+1);
ArrayResize(lots,closeSize+1);
ticketsClose[closeSize][0] = arrayTickets[i][0]; // # тикета
ticketsClose[closeSize][1] = arrayTickets[i][1]; // тип ордера

// здесь укажем сколько лотов нужно закрыть
lots[closeSize] = arrayTickets[i][2]; // закрываемый объем
// можно закрывать частично, тогда нужно переписать строку сверху
}
//----
return;
}

//+------------------------------------------------------------------+
//| Закрывает ордера с указанными тикетами |
//+------------------------------------------------------------------+
void CloseMarketOrders(int ticketsArray[][2], double lotsArray[])
{
//----
int i,size=ArrayRange(ticketsArray,0);
if (size==0) return;

int ticket,type;
double lots;
bool res;

int total=OrdersTotal();

for (i=0;i<size;i++)
{
ticket = ticketsArray[i][0];
type = ticketsArray[i][1];
lots = lotsArray[i];
RefreshRates(); // на всякий случай обновим сведения о рыночном окружении

// блок закрытия покупок
if (type==OP_BUY)
{
res = OrderClose(ticket,lots,Bid,Slippage,Orange);
if (!res)
{
Print("Не удалось закрыть ордер в покупку #",ticket,"! Ошибка №",GetLastError());
// дальнейшая обработка ошибки, написать самостоятельно
}
}

// блок закрытия продаж
if (type==OP_SELL)
{
res = OrderClose(ticket,lots,Ask,Slippage,Orange);
if (!res)
{
Print("Не удалось закрыть ордер в продажу #",ticket,"! Ошибка №",GetLastError());
// дальнейшая обработка ошибки, написать самостоятельно
}
}

}
//----
return;
}
In void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9]) müssen wir eine Bedingung einfügen, die entscheidet, ob wir die Bestellung verlassen oder schließen sollen.
Ich habe versucht, Bedingungen zu stellen, aber nichts funktioniert....
Kann jemand nachsehen, ob es einen Fehler in diesen Funktionen gibt oder ob ich es vermasselt habe....
Dateien:
osc_test_1.mq4  37 kb
 
Hallo. Nachdem ich den Expert Advisor im Tester ausgeführt habe, benötige ich Informationen über das Gesamtvolumen der getätigten Trades in Lots (z.B. in den Logs). Der Expert Advisor hat den MM-Block aktiviert, die Trades werden in % der freien Mittel ausgeführt, so dass eine einfache Multiplikation mit der Anzahl der Trades nicht funktioniert. Gibt es eine Standardfunktion, die diese Informationen liefert (wie OrderLots, aber mit Gesamtbetrag)? Wenn es eine solche Funktion nicht gibt, kann jemand einen einfachen Code für die Realisierung dieser Aufgabe vorschlagen? Ich danke Ihnen.
 

wie man Ports für mt4 auf ADSL-Modem über WIFI zu öffnen? Ich gehe ins Internet auf 6 DTs. Modell tp-link W8901G lesen, dass Sie Ports für torents öffnen kann jemand Gesicht?

 
ruslanchik:

wie man Ports für mt4 auf ADSL-Modem über WIFI zu öffnen? Ich gehe ins Internet auf 6 DTs. Modell tp-link W8901G lesen, dass Sie Ports für torents öffnen kann jemand Gesicht?

Siehe http://megatorrents.org/forum/viewtopic.php?t=262709