Chirk alguém por 5 wmz. - página 14

 
Profitabl:

Este código se compila com quatro erros, talvez faltem parênteses?


Experimente assim:

Bem, as funções NumberOfPositions e ClosePositions devem estar presentes no 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.

 

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

Não houve 4 erros. Havia 4 funções não utilizadas. Esclareceu tudo.

Vou dizer novamente. Verificar por 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:

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

Não houve 4 erros. Havia 4 funções não utilizadas. Esclareceu tudo.

Vou dizer novamente. Verifique em tf=n1.


Você realmente deu um exemplo, você pode enviar WMR onde você pode transferir 160 rublos para, pelo menos, uma organização de caridade.

A única coisa que não posso fazer é fechar as posições de VENDA às sextas-feiras às 23:00, caso contrário somente COMPRAR é fechado, enquanto a VENDA é modificada por três ou quatro dias e, é claro, as posições de VENDA são fechadas.

Aqui estes dados do euro e da libra podem ser levados em conta como condições adicionais ?, justamente quando as previsões não são assimétricas B=BB ou H=HH deve-se comprar na direção oposta, isso melhora muito mais o resultado.

Mas se os mesmos dados para a libra esterlina e o euro ao mesmo tempo
O euro está "caindo na terça-feira, caindo na quarta-feira, caindo na quinta-feira".
GBP "subindo, Wed rising, Tues falling"
depois abrir não "VENDER", mas "COMPRAR".

Falando em rentabilidade, se você remover previsões imprecisas, apenas 70 negócios de seis previsões de sexta-feira dão cerca de 1500 pips. Isto pode ser multiplicado por cinco vezes no resto dos dias, e aumentando os lotes em proporção ao depósito por mais duas vezes - não importa quantos, é o break-even. Darei a Leonid uma tabela de 160 EUR GBP CHF JPY previsões gratuitas para a participação no problema, enviar WMR ale2715@yandex.ru e na carta de retorno receberá previsões, escreverá um EA, ganhará, mas não participe do campeonato com ele, eu o ligarei ao campeonato também.

 
lasso:

Tente desta forma:

Bem, e as funções NumberOfPositions e ClosePositions devem estar presentes no código


Obrigado, vamos deixar assim por enquanto.
 
Profitabl:

A única coisa que não funciona é que as posições de VENDA também são fechadas às sextas-feiras às 23:00, caso contrário apenas COMPRAR são fechadas, enquanto que VENDA é modificada por três ou quatro dias e, é claro, as posições de VENDA são fechadas.

De fato... )))

Deveria ser assim

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

A abertura de uma posição de Venda não fazia parte do código de forma alguma. Porque no trabalho original era uma questão de abrir uma posição de compra no franco.

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

Sim, eu preciso mudar um pouco o fechamento - ClosePositions(NULL,-1, Magic)

 
leonid553:

Não houve quatro erros. Havia quatro funções não utilizadas. Eu o limpei.

Vou dizer novamente. Verificar em tf=n1

Um olhar mais atento revelou as seguintes nuances:

1) As condições se contradizem

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


2) a chamada série temporal (do tipo Open[48]) não é muito correta ao testar a história, pois pode haver lacunas na história e, portanto, o preço não é obtido da barra sobre a qual o iniciador escreveu


3) Condição de fechamento.

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

Não é universal já que, por exemplo, a corretora tem Al...e não há bar na sexta-feira com o valor da hora igual a 23


4) E mais algumas nuances menores, mas sua influência sobre a curva de equilíbrio resultante não é de todo menor.... ))



Por favor, tenha paciência comigo corretamente. Este posto não é uma reclamação contra a leonid553, de forma alguma. (Kudos para Leonid!!!)


Meu ponto é: "Chirp, chirp o roteiro, em cinco minutos" é possível, é claro. Mas a prática mostra que o simples TOR não acontece.

Em todos os lugares você precisa verificar os valores-limite de todos os parâmetros, depuração, configuração de "armadilhas de erro", etc.

E para finalmente obter um pequeno produto decente, em vez de um "roteiro" - é preciso muito tempo, não importa como você olhe para ele... Infelizmente.

 

O assessor já está negociando no real, hoje abriu as duas primeiras negociações aos 23 anos, agora me pergunto como fechará amanhã. Obrigado a todos por sua participação.

E nesta tabela os resultados da EA para as previsões de terça-feira, marcados com "I", estes são os sinais mais brilhantes, comercializados apenas sobre eles - este é o método B, seus totais na coluna mais à direita, todos os totais em pips.

Por exemplo, em meu consultor especializado para terça-feira CHF deixei apenas BBB, BHN e BHN e acrescentei a possibilidade de aumentar os lotes proporcionais ao depósito. O total no teste para 10% de depósito é de 180% com 55 negócios perdidos e lucrativos, mas para 20% de compra é de 450% de lucro. Você limpa o grão da palha vermelha, ensina o Expert Advisor a mudar os sinais marcados "c" em caso de previsões contraditórias de pares assimétricos, a não diminuir lotes adicionados, a negociar simultaneamente as quatro moedas e você está "familiarizado com o diretor forex". Basta resolver estes três problemas e você terá esta EA, só não entre no campeonato com ela, minha analítica está glorificando meu nome.

Verifique a si mesmo 450% de 27.01.08 de apenas três previsões de 160, CHF em 1H. Era até 830%, teria permanecido assim, e teria sido até mais, se o Assessor Especialista tivesse apenas aumentado os lotes.

Arquivos anexados:
450_2.rar  20 kb
 

Sem palavras... É como um graal. Por que você não notou isso antes?

 
lasso:

Um olhar mais atento revela as seguintes nuances:

......

Por favor, entenda-me corretamente. Este post não é uma reclamação sobre .......

Não pretendo de forma alguma escrever o código corretamente. Eu indiquei especificamente ali que o código que escrevi é apenas um plano.

Eu ainda não entrei em todas as sutilezas de táticas, exceto em termos gerais. Mas eu já acho que a tática merece uma atenção muito séria. Eu lido principalmente com o comércio sazonal de mercadorias e é por isso que eu acho que há perspectivas aqui. Porque este é essencialmente o mesmo "comércio quase-sazonal", mas de curto prazo, no relógio:

"Verificação das tendências :
Tomemos a prata como exemplo. O castiçal de uma hora das 18h às 19h coincidiu em mais de 70% dos casos com o movimento de preços nas 23 horas seguintes, o que por sinal é típico para alguns outros metais. E isto aconteceu nos últimos 50, 40, 30, 20, e 10 dias. Então, depois das 19 horas, colocamos uma ordem na direção desta vela....
"(de - fórum BR).

Além disso, por acaso, eu - tão recentemente quanto ontem (ver citação acima) - descobri - que exatamente com tais táticas (bem, quase "um-para-um") foi ganho o concurso de demonstração do último mês em um conhecido DC BR. Com um prêmio de US$ 5000.

E o participante, que negociou futuros neste concurso de setembro, obteve mais de 1000 pontos de lucro com esta tática desde o início do mês. (As regras de concorrência são lá muito rigorosas - os participantes devem descrever no fórum cada uma de suas transações no momento da entrada e o risco (stop-loss) de cada transação não deve exceder -200 dólares, caso contrário, será uma desqualificação).

Então, NorthAlec, - você provavelmente está zombando em vão.