Chirk alguien por 5 wmz. - página 14

 
Profitabl:

Este código compila con cuatro errores, ¿tal vez faltan paréntesis?


Pruébalo así:

Bien, las funciones NumberOfPositions y ClosePositions deben estar presentes en el código

extern double TakeProfit = 120;
extern double StopLoss = 120;
extern double Lots = 0.1;
int Magic = 1234567;
int ticket;

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
if ( DayOfWeek()==4)//если сегодня четверг
   {
    if ( Hour() == 23) //если - 23 часа терминального времени
       {
        if ( NumberOfPositions(NULL,OP_BUY, Magic )==0 ) //если нет открытых бай-позиций
           { 
           //"если цена open 46 периода 30M четверга меньше цены open 46 периода 30M среды,"(с)
           //"а цена опен среды больше цены опен вторника" (с),
           //"да ещё цена опен вторника больше цены опен понедельника" (с),
           if ( Close[1]<= Open[24] && Close[23]>=Open[48] && Close[47]>=Open[72]) 
              {
               ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask+StopLoss*Point,3,0,Ask+TakeProfit*Point,"Name_Expert",16384,0,Green);
               if(ticket!=-1)
                  {Print("Error opening BUY order : ",GetLastError());
                   return(0);}
              }     

           }
           
        }
   }       

if ( DayOfWeek()==5 && Hour() == 23){//если сегодня пятница, 23-00
//закрываем
ClosePositions(NULL,OP_BUY, Magic); }

return(0);
}
// the end.

 

=================

No hubo 4 errores. Había 4 funciones no utilizadas. Aclarado.

Lo diré de nuevo. Comprobación de tf=n1

extern int       Magic=5671;

extern double    lots = 0.1;
extern int       StopLoss=120;
extern int       TakeProfit=120;

extern string _________________ = "=== Прочие Параметры советника  ===";
extern int        Slippage        = 10; // Проскальзывание цены
extern string Name_Expert = "Обезьяна Чи-Чи-Чи продавала кирпичи";
extern bool   UseSound      = True;   // Использовать звуковой сигнал
color  clOpenBuy     = Blue;        // Цвет значка открытия покупки
color  clOpenSell    = Red;         // Цвет значка открытия продажи
 color  clCloseBuy    = Green;     // Цвет закрытия покупки
 color  clCloseSell   = Green;    // Цвет закрытия продажи
extern int    NumberOfTry   = 10;           // Количество попыток
 string SoundSuccess  = "ok.wav";          // Звук успеха
 string SoundError    = "timeout.wav";    // Звук ошибки

//----------------------------------
double SL,TP;
int ticket;
static int prevtime = 0;
int StopLevel;

//-- Подключаемые модули --

#include <stderror.mqh>
#include <stdlib.mqh>

//+------------------------------------------------------------------+

int start()
  {
// задаем работу по ЦЕНАМ ОТКРЫТИЯ 
if (Time[0] == prevtime) return(0); //если появился новый бар
   prevtime = Time[0]; // начинаем работу

StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL); // вызываем разрешенный 
//минимаьный стоп-Уровень
//======================= открываем позиции =====================================
if ( DayOfWeek()==4){//если сегодня четверг
if ( Hour() == 23)  {//если - 23 часа терминального времени
if ( NumberOfPositions(NULL ,OP_BUY, Magic )==0 ) { //если  нет открытых бай-позиций 
//если цена open 46 периода 30M четверга меньше цены open 46 периода 30M среды,
//а цена опен среды больше цены опен вторника,
//да ещё цена опен вторника больше цены опен понедельника,
if ( Close[1]<= Open[24] && Close[23]>=Open[48] && Close[47]>=Open[72]) {
//покупаем 
      SL=0;TP=0;
      if(StopLoss>0 && StopLoss>StopLevel )    SL=Bid-Point*StopLoss;
      if(TakeProfit>0 && TakeProfit>StopLevel) TP=Bid+Point*TakeProfit;
      if(StopLoss  <StopLevel && StopLoss>0)   SL = Bid-Point*StopLevel; 
      if(TakeProfit<StopLevel && TakeProfit>0) TP = Bid+Point*StopLevel; 
   ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,SL,TP,"Name_Expert",Magic,0,clOpenBuy );
   if(ticket < 0) {
            Print("Ошибка открытия ордера BUY #", GetLastError()); 
            Sleep(10000);  prevtime = Time[1];   return (0); 
                  } 
        }}}}
//================== конец блока открытия ==================================
 //================Закрытие позиций=====================================
if ( DayOfWeek()==5  && Hour() == 23){//если сегодня пятница, 23-00
//закрываем
 ClosePositions(NULL,OP_BUY, Magic); }            
                  
//================== Конец блока закрытия  =============================
  return(0);
  }
//ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Конец функции int start() ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ 
 
 //ЖЖЖЖЖЖЖЖЖЖЖ ПОЛЬЗОВАТЕЛЬСКИК ФУНКЦИИ ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ

//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование торговой операции                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - идентификатор торговой операции                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
  switch (op) {
    case OP_BUY      : return("Buy");
    case OP_SELL     : return("Sell");
    case OP_BUYLIMIT : return("BuyLimit");
    case OP_SELLLIMIT: return("SellLimit");
    case OP_BUYSTOP  : return("BuyStop");
    case OP_SELLSTOP : return("SellStop");
    default          : return("Unknown Operation");
  }
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия  : 19.02.2008                                                      |
//|  Описание: Закрытие одной предварительно выбранной позиции                 |
//+----------------------------------------------------------------------------+
void ClosePosBySelect() {
  bool   fc;
  color  clClose;
  double ll, pa, pb, pp;
  int    err, it;

  if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
    for (it=1; it<=NumberOfTry; it++) {
      if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
      while (!IsTradeAllowed()) Sleep(5000);
      RefreshRates();
      pa=MarketInfo(OrderSymbol(), MODE_ASK);
      pb=MarketInfo(OrderSymbol(), MODE_BID);
      if (OrderType()==OP_BUY) {
        pp=pb; clClose=clCloseBuy;
      } else {
        pp=pa; clClose=clCloseSell;
      }
      ll=OrderLots();
      fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
      if (fc) {
        if (UseSound) PlaySound(SoundSuccess); break;
      } else {
        err=GetLastError();
        if (UseSound) PlaySound(SoundError);
        if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
        Print("Error(",err,") Close ",GetNameOP(OrderType())," ",
              ErrorDescription(err),", try ",it);
        Print(OrderTicket(),"  Ask=",pa,"  Bid=",pb,"  pp=",pp);
        Print("sy=",OrderSymbol(),"  ll=",ll,"  sl=",OrderStopLoss(),
              "  tp=",OrderTakeProfit(),"  mn=",OrderMagicNumber());
        Sleep(1000*5);
      }
    }
  } else Print("Некорректная торговая операция. Close ",GetNameOP(OrderType()));
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru/                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие позиций по рыночной цене                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) ClosePosBySelect();
        } } } } }

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) kp++;
          }}}}}  return(kp);}

 
leonid553:

=================

No hubo 4 errores. Había 4 funciones no utilizadas. Aclarado.

Lo diré de nuevo. Comprueba en tf=n1.


De hecho, ha dado un ejemplo, puede enviarme WMR para transferir 160 rublos a una organización benéfica.

Lo único que no puedo hacer es cerrar las posiciones de VENTA los viernes a las 23:00, de lo contrario sólo se cierran las de COMPRA, mientras que las de VENTA se modifican durante tres o cuatro días y, por supuesto, se cierran las s\l.

Aquí se pueden tener en cuenta estos datos del euro y de la libra como condiciones adicionales..., justo cuando las previsiones no son asimétricas B=BB o H=HH se debe comprar en sentido contrario, mejora mucho más el resultado.

Pero si los mismos datos para la libra y el euro al mismo tiempo
EUR El euro "baja el martes, baja el miércoles, baja el jueves
GBP "al alza, el miércoles al alza, el martes a la baja".
entonces abre no "VENDER" sino "COMPRAR".

Hablando de rentabilidad, si se eliminan los pronósticos inexactos, sólo 70 operaciones de seis pronósticos de viernes dan unos 1500 pips. Esto se puede multiplicar por cinco veces el resto de los días, y aumentar los lotes en proporción a la depreciación por otras dos veces - no importa cuántos, es el punto de equilibrio. Le doy a Leonid una tabla de 160 EUR GBP CHF JPY pronósticos de forma gratuita para la participación en el problema, enviar WMR ale2715@yandex.ru y en la carta de retorno recibirá los pronósticos, escribir un EA, que va a ganar, pero no participan en el campeonato con él, lo voy a enganchar al campeonato también.

 
lasso:

Inténtalo de esta manera:

Bueno, y las funciones NumberOfPositions y ClosePositions deberían estar presentes en el código


Gracias, lo dejaremos así por ahora
 
Profitabl:

Lo único que no funciona es que las posiciones de VENTA también se cierran los viernes a las 23:00, por lo demás sólo se cierran las de COMPRA, mientras que las de VENTA se modifican durante tres o cuatro días y por supuesto las de s\l.

De hecho... )))

Debería ser así

 //================Закрытие позиций=====================================
if ( DayOfWeek()==5  && Hour() == 23){//если сегодня пятница, 23-00
//закрываем
 ClosePositions(NULL,-1, Magic); }            
                  
//================== Конец блока закрытия  =============================
  return(0);
  }
//ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Конец функции int start() ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ 
 

La apertura de una posición de venta no formaba parte del código en absoluto. Porque en el trabajo original se trataba de abrir una posición de compra en el franco.

//------------

Sí, necesito cambiar el cierre un poco - ClosePositions(NULL,-1, Magic)

 
leonid553:

No hubo cuatro errores. Había cuatro funciones no utilizadas. Lo he limpiado.

Lo diré de nuevo. Comprobar en tf=n1

Un examen más detallado reveló los siguientes matices:

1) Las condiciones se contradicen entre sí

//если цена open 46 периода 30M четверга меньше цены open 46 периода 30M среды,
//а цена опен среды больше цены опен вторника,
//да ещё цена опен вторника больше цены опен понедельника,
if ( Close[1]<= Open[24] && Close[23]>=Open[48] && Close[47]>=Open[72]) {
//покупаем 


2) llamar a las series de tiempo (del tipo Open[48]) no es del todo correcto cuando se hacen pruebas en el historial, ya que puede haber huecos en el historial y, por lo tanto, el precio se obtiene no de la barra que el iniciador escribió


3) Condición de cierre.

 //================Закрытие позиций=====================================
if ( DayOfWeek()==5  && Hour() == 23){//если сегодня пятница, 23-00
//закрываем

No es universal ya que por ejemplo la empresa de corretaje tiene Al...y no hay ninguna barra el viernes con el valor de la hora igual a 23


4) Y algunos otros matices menores, pero su influencia en la curva de equilibrio resultante no es en absoluto menor.... ))



Por favor, tened paciencia conmigo correctamente. Este post no es una queja contra leonid553, ni mucho menos. (¡¡¡Felicidades a leonid!!!)


Mi punto es: "Chirp, chirp el guión, en cinco minutos" es por supuesto posible. Pero la práctica demuestra que no hay TOR sencillos.

En todas partes hay que comprobar los valores límite de todos los parámetros, depurar, establecer "trampas de error", etc.

Y para conseguir finalmente un pequeño producto decente, en lugar de un "guión", se necesita mucho tiempo, se mire como se mire... Desgraciadamente.

 

El asesor ya está cotizando en el real, hoy ha abierto las dos primeras operaciones a 23, ahora me pregunto cómo cerrará mañana. Gracias a todos por su participación.

Y en esta tabla los resultados de EA para las predicciones del martes, marcados "I", estas son las señales más brillantes, el comercio sólo en ellos - este es el método B, sus totales en la columna de la derecha, todos los totales en pips.

Por ejemplo, en mi Asesor Experto para el martes CHF dejé sólo BBB, BHN y BHN y añadí la posibilidad de aumentar los lotes proporcionalmente al depósito. El total en la prueba para el 10% de depósito es de 180% con 55 operaciones perdedoras y rentables, pero para el 20% de compra es de 450% de beneficio. Limpias el grano de la paja roja, enseñas al Asesor Experto a cambiar las señales marcadas con una "c" en caso de pronósticos contradictorios de pares asimétricos, a no disminuir los lotes añadidos, a operar simultáneamente las cuatro divisas y estás "familiarizado con el director de forex". Resuelve estos tres problemas y conseguirás este EA, pero no entres en el campeonato con él, mi analítica está glorificando mi nombre.

Compruebe usted mismo el 450% desde el 27.01.08 de sólo tres predicciones de 160, CHF en 1H. Llegó a ser un 830%, se habría mantenido así, e incluso habría sido más, si el Asesor Experto sólo hubiera aumentado los lotes.

Archivos adjuntos:
450_2.rar  20 kb
 

No hay palabras... Es como un grial. ¿Por qué no te diste cuenta antes?

 
lasso:

Un examen más detallado revela los siguientes matices:

......

Por favor, entiéndame bien. Este post no es una queja sobre .......

No pretendo escribir el código correctamente en absoluto. Allí señalé específicamente que el código que escribí es sólo un plano.

Todavía no he entrado en todas las sutilezas de la táctica, salvo en términos generales. Pero ya creo que la táctica merece una atención muy seria. Me dedico principalmente al comercio estacional de materias primas y por eso creo que hay perspectivas aquí. Porque se trata esencialmente del mismo "comercio cuasi estacional", pero a corto plazo, contrarreloj:

"Comprobación de la tendencia :
Tomemos como ejemplo la plata. La vela de una hora entre las 18 y las 19 horas coincidió en más del 70% de los casos con el movimiento del precio en las siguientes 23 horas, lo que por cierto es típico de algunos otros metales. Y esto ha ocurrido en los últimos 50, 40, 30, 20 y 10 días. Así que, después de las 19 horas, hacemos un pedido en la dirección de esta vela....
" (del foro de BR).

Además, por casualidad, ayer mismo (véase la cita anterior) me enteré de que precisamente con esa táctica (bueno, casi "de tú a tú") se ganó el concurso de maquetas del mes pasado en una conocida RB de DC. Con un premio de 5000 dólares.

Y el participante, que operó con futuros en este concurso de septiembre, obtuvo más de 1000 puntos de beneficio con esta táctica desde principios de mes. (Las reglas de la competencia demo son muy estrictas allí - los participantes deben describir en el foro cada una de sus transacciones en el momento de la entrada y el riesgo (stop-loss) de cada transacción no debe exceder de -200 dólares, de lo contrario será una descalificación).

Así que, NorthAlec, - probablemente te estás burlando en vano.