Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 515

 
artmedia70:
Si tiene estas preguntas, debería dirigirse al hilo de construcción del 610: los desarrolladores están allí


Gracias, se ha ido.
 
Zolotai:

Sí, pero, ya sabes. Tendría que buscar en el código de otra persona. Lo cual no entiendo, y lleva mucho tiempo Para entenderlo.

Empiece por el tutorial, luego la documentación, etc. No hay otra manera. Además, podrás entender el código de otras personas y aprender mucho de ellas. Las indirectas no enseñan, corrompen.
 

Pregunta sobre la visualización.

Creo una orden pendiente con un comando como este

OrderSend(Symbol(), OP_BUYLIMIT, lote, precio, 3, 0, take_profit, 999, 999, 0, Blue);

En el probador, podemos ver su recorrido en forma de flechas: orden pendiente ------> compra --------------> toma de beneficios venta

Sin embargo, sólo aparece la flecha azul al colocar una orden y sólo podemos adivinar la compra y la toma de beneficios en los registros. ¿Hay alguna manera de ver las flechas en el gráfico real de la misma manera que en el probador?

 
Denis111:

Pregunta sobre la visualización.

Creo una orden pendiente mediante un comando del siguiente tipo

OrderSend(Symbol(), OP_BUYLIMIT, lote, precio, 3, 0, take_profit, 999, 999, 0, Blue);

En el probador, las flechas muestran todo su recorrido: orden pendiente ------> comprar --------------> vender en Take Profit

En la vida real, sólo aparece la flecha azul cuando se coloca una orden y sólo podemos adivinar la compra y la toma de beneficios en los registros. ¿Hay alguna manera de ver las flechas en el gráfico real de la misma manera que en el Probador de Estrategias?


Para ello, abre sin TP, y luego especifica un color al modificar también, ¡y tendrás un triángulo de cierre con una línea de puntos desde la propia apertura!
 

Hola, he escrito un sencillo script para abrir una orden de compra pendiente. El script funciona con éxito en una cuenta demo, pero en una cuenta real genera el error: 133, que significa que no se permite el comercio. ¿Podría decirme cuál es el problema? ¿A qué puede deberse este error?


extern int orderSize = 50;
extern int SL = 20;
extern int TP = 20;

¡int start()
{
double correctPoint = 0.0001;
double priceOpen = iOpen( Symbol(), PERIOD_M5, 0 ); //escribe el precio de apertura de la barra actual de cinco minutos en la variable priceOpen

double priceBuy = priceOpen + (double)orderSize * correctPoint; //el precio al que se coloca la orden pendiente
double priceTP = priceBuy + (double)TP * correctPoint;
double priceSL = priceBuy - (double)SL * correctPoint;

while( !IsTradeAllowed() )
Sleep( 100 );
int codeError = OrderSend( Symbol(), OP_BUYSTOP, 1.5, priceBuy, 100, priceSL, priceTP );
if( codeError == -1 )
Alert ("BuyStop error: ", GetLastError() );

return(0);
}//±
 
Y aquí resulta que hay quien atiborra medio foro con una pregunta.
 

Quiero hacer un simple script owl..... cuando se coloca el 1er orden SL y TP da error 130, y donde insertar el código con Tralingstop???

//+------------------------------------------------------------------+
//| установка мышкой отложенных ордеров                              |
//|                               Copyright © 2012, Хлыстов Владимир |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Хлыстов Владимир"
#property link      "cmillion@narod.ru"
#property show_inputs

//--------------------------------------------------------------------
extern int     Stoploss          = 0,     //стоплосс ордеров
               Takeprofit        = 0;     //тейкпрофит ордеров
extern double  Lot               = 0.1;   //лот
extern int     Magic             = 0;     //уникальный номер ордеров этого советника
extern bool    comment           = true;  //выводить информацию на экран
//--------------------------------------------------------------------
int start()
{
   int n;
   double SL,TP;
   double Price = NormalizeDouble(WindowPriceOnDropped(),Digits);
   string txt=StringConcatenate("Скрипт выставления рыночного ордера, старт ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   while(true)
   {
      RefreshRates();
      if(Price>Ask) 
      {
         if (Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); else TP=0;
         if (Stoploss!=0)   SL = NormalizeDouble(Ask - Stoploss   * Point,Digits); else SL=0;
         if (OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),0,SL,TP,"StopOrders",Magic,0,CLR_NONE)!=-1)
              {txt = StringConcatenate(txt,"\nВыставлен BUY ",DoubleToStr(Ask,Digits));break;}
         else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," выставления BUY ");
      }
      if(Price<Bid) 
      {
         if (Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); else TP=0;
         if (Stoploss!=0)   SL = NormalizeDouble(Bid + Stoploss   * Point,Digits); else SL=0;
         if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),0,SL,TP,"StopOrders",Magic,0,CLR_NONE)!=-1)
              {txt = StringConcatenate(txt,"\nВыставлен SELL ",DoubleToStr(Bid,Digits));break;}
         else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," выставления SELL ");
      }
      if (comment) Comment("Попытка ",n," ",txt);
      n++;
      if (n>10) break;
   }
   if (comment) Comment(txt,"\nСкрипт закончил свою работу ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   return(0);
}
//--------------------------------------------------------------------
 
MyTHblu:

Quiero hacer un simple script owl..... cuando al colocar la 1ª orden SL y TP da error 130, y donde insertar el código con Tralingstop??


130 - Las paradas son erróneas. Vuelva a leer detenidamente las condiciones de su empresa de corretaje y vuelva a leerlas con regularidad para que no se le olviden. ¿Por qué os gusta tanto Alpari, es como la miel...


El código de la red de arrastre puede ser copiado en el inicio, o puede utilizar una función separada, de nuevo, desde el inicio.

 
evillive:

130 - las paradas están mal. Lea una vez más las condiciones de negociación de su corredor y vuélvalas a leer con regularidad para que no se le olviden. ¿Por qué os gusta tanto Alpari, es como la miel de abeja...


El código de la red de arrastre se puede copiar en el inicio, o se puede utilizar una función separada, de nuevo, desde el inicio.


Como tomó este búho de CodeBase, también puede elegir otro con arrastre. Y en Alps, hay que abrir sin SL y TP e inmediatamente modificar la orden poniéndolos. ¿Por qué no se molestan en leer los términos y condiciones del broker, las reglas del foro, la ayuda de MT4 y la información escrita y discutida cientos de veces aquí en el sitio, usar la búsqueda aquí y en Google? ¿Antes de hacer preguntas básicas?
 

cómo conectar los códigos....hay una parada comercial... No lo he insertado en ningún sitio, quizás tenga un error, al compilar dice 'if' - no se permiten expresiones en un ámbito global, parece que significa un error antes de if.... ¿no?

extern bool UseTrailing = true;
extern int lMinProfit = 30;
extern int sMinProfit = 30;
extern int lTrailingStop = 15;
extern int sTrailingStop = 15;
extern int lTrailingStep = 5;
extern int sTrailingStep = 5;
//-----

if (UseTrailing) TrailingPositions();  

void TrailingPositions() 
{
  int cnt = OrdersTotal();

  for (int i=0; i<cnt; i++) {
        if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
        if (OrderSymbol() != Symbol()) continue;                

        if (OrderType() == OP_BUY) {
        if (Bid-OrderOpenPrice() > lMinProfit*Point) {
                if (OrderStopLoss() < Bid-(lTrailingStop+lTrailingStep-1)*Point) {
                OrderModify(OrderTicket(), OrderOpenPrice(), Bid-lTrailingStop*Point, OrderTakeProfit(), 0, Blue);
                }
        }
        }

        if (OrderType() == OP_SELL) {
        if (OrderOpenPrice()-Ask > sMinProfit*Point) {
                if (OrderStopLoss() > Ask+(sTrailingStop+sTrailingStep-1)*Point || OrderStopLoss() == 0) {
                OrderModify(OrderTicket(), OrderOpenPrice(), Ask+sTrailingStop*Point, OrderTakeProfit(), 0, Blue);
                }
        }
        }
  }
  
}