[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 372

 
Bonsoir. J'aimerais savoir si quelqu'un utilise l'indicateur de répartition des transactions par niveaux de prix sur un horizon temporel donné, qui peut être téléchargé sur http://fxcoder.ru/indicators/tpo. Si oui, comment l'analyser correctement ? Avez-vous des informations à ce sujet ?
 
artemka_1981:
Maintenant, lorsque le test n'ouvre pas une seule transaction dans le journal, il est écrit Open_BuyS_SellS EURUSD,Daily : OrderSend error 131.

L'erreur 131 est un volume incorrect. Essayez le lot 1 par exemple, vous ne serez peut-être pas autorisé à ouvrir avec un lot de 0,01.

ERR_INVALID_TRADE_VOLUME131Volume incorrect
 
ilunga:

L'erreur 131 est un volume incorrect. Essayez le lot 1 par exemple, vous ne serez peut-être pas autorisé à ouvrir avec un lot de 0,01.

ERR_INVALID_TRADE_VOLUME131Volume incorrect
//+------------------------------------------------------------------+
//|                                                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);
}
Après-midi. Ecrit maintenant Open_BuyS_SellS EURUSD,H4 : OrderSend error 3

 
artemka_1981:
Après-midi. Ecrit maintenant Open_BuyS_SellS EURUSD,H4 : OrderSend error 3

Lire les codes d'erreur
 
artemka_1981:
Bonne journée. Maintenant il dit Open_BuyS_SellS EURUSD,H4 : OrderSend error 3

Voir l'aide pour les paramètres et les codes d'erreur de OrderSend

3 - paramètres erronés.

Vous en avez oublié un et au lieu de date d'expiration, vous avez écrit couleur flèche_color.

 
ilunga:

Voir l'aide pour les paramètres et les codes d'erreur de OrderSend

3 - paramètres erronés.

Vous en avez oublié un et au lieu de date d'expiration, vous avez écrit couleur flèche_color.

Je suis désolé pour les questions stupides, c'est mon premier EA que j'essaie d'écrire par moi-même, tous les bugs ont commencé lorsque j'ai ajouté la fonction trail, c'est pourquoi je m'adresse à vous pour que vous m'aidiez à résoudre mes erreurs.
 

aide qui sait !!!!


L'essence de la stratégie : Entrée par signal stochastique (5,14,3) sortie également par stochastique, mais avec une autre période (5,3,3). Je ne comprends pas comment faire une sortie par stochastique et non par signal inverse.
J'ai un problème et je n'ai aucune idée de la façon dont il peut être résolu, je vais essayer de vous expliquer.
Ainsi, dans le code que j'ai posté, il y a 2 fonctions
//+------------------------------------------------------------------+
//| подготовить массив тикетов для закрытия |
//+------------------------------------------------------------------+
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;
}
Dans void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9]) nous devons mettre une condition qui décidera si nous devons laisser ou fermer l'ordre...
J'ai essayé de mettre des conditions mais rien ne fonctionne....
Quelqu'un peut-il regarder et montrer s'il y a une erreur dans ces fonctions ou si je me suis trompé ? ....
Dossiers :
osc_test_1.mq4  37 kb
 
Bonjour. Après avoir exécuté le conseiller expert dans le testeur, j'ai besoin d'obtenir des informations sur le volume total des transactions effectuées en lots (par exemple, dans les journaux). Le Conseiller Expert a le bloc MM activé, les trades sont exécutés en % des fonds libres, donc la simple multiplication par le nombre de trades ne fonctionne pas. Existe-t-il une fonction standard qui fournit cette information (comme OrderLots, mais avec le montant total) ? Si une telle fonction n'existe pas, quelqu'un peut-il suggérer un code simple pour la réalisation de cette tâche ? Merci.
 

comment ouvrir les ports pour mt4 sur le modem ADSL via WIFI ? je vais à l'internet sur 6 DTs. modèle tp-link W8901G lire que vous pouvez ouvrir les ports pour torents peut quelqu'un face ?

 
ruslanchik:

comment ouvrir les ports pour mt4 sur le modem ADSL via WIFI ? je vais à l'internet sur 6 DTs. modèle tp-link W8901G lire que vous pouvez ouvrir les ports pour torents peut quelqu'un face ?

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