comprar somente acima da media movel

Douglas Betiol  

Fla pessoal blz?

o Codigo que estou fazendo para robozinho,eu preciso de ajuda:

#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <trade\trade.mqh>
double fechamento, abertura, maxima, minima, resultado,ordem;
#include <trade\trade.mqh>

double mm_buffer[];
int mm_Handle;

CTrade meutrade;

double Bid,Ask;


int OnInit()
  {
ArraySetAsSeries(mm_buffer,true);

mm_Handle= iMA(_Symbol,_Period,8,0,MODE_SMA,PRICE_CLOSE);

ChartIndicatorAdd(0,0,mm_Handle);

  //Print(resultado);

   return(INIT_SUCCEEDED);
  }

//  {

   
 // }

void OnTick()
  {
   CopyBuffer(mm_Handle,0,0,10,mm_buffer);
   //meutrade.BuyLimit(0.01,resultado,_Symbol,0, 0);
      //meutrade.Sell(0.01,ordem,_Symbol,0, 0);
     meutrade.Sell(0.01,_Symbol,iClose(_Symbol,PERIOD_CURRENT,(2)))
   
     if(PRICE_CLOSE > mm_Handle)
   {
     meutrade.BuyLimit(0.01,resultado,_Symbol,0, 0);
   }   
  }


*Compra somente acima da media movel 8 e venda no mesmo candles(finalzinho do candles de 5 minutos) que foi ativado a compra.

Ricardo Almeida Branco  
Douglas Betiol:

Fla pessoal blz?

o Codigo que estou fazendo para robozinho,eu preciso de ajuda:


*Compra somente acima da media movel 8 e venda no mesmo candles(finalzinho do candles de 5 minutos) que foi ativado a compra.

Troque

if(PRICE_CLOSE > mm_Handle)
   {
     meutrade.BuyLimit(0.01,resultado,_Symbol,0, 0);
   }   
  }

Por
if(iClose(_Symbol,PERIOD_CURRENT,0)> mm_Buffer[0])
   {
     meutrade.BuyLimit(0.01,resultado,_Symbol,0, 0);
   }   
  }

Douglas Betiol  
Ricardo Branco #:
Troque

if(PRICE_CLOSE > mm_Handle)
   {
     meutrade.BuyLimit(0.01,resultado,_Symbol,0, 0);
   }   
  }

Por

blz parceiro deu certo,agora na venda pra vender(no fechamento) no mesmo candles de comprou onde está o erro abaixo:

meutrade.Sell(0.01,_Symbol,PERIOD_H1,PRICE_CLOSE,1);

Ricardo Rodrigues Lucca  
Douglas Betiol #:

blz parceiro deu certo,agora na venda pra vender(no fechamento) no mesmo candles de comprou onde está o erro abaixo:

meutrade.Sell(0.01,_Symbol,PERIOD_H1,PRICE_CLOSE,1);

  • 0.01, correto eh o lote que voce quer;
  • _Symbol, pode colocar NULL ou deixar como esta. Isso é o simbolo que vai ser criado a ordem;
  • PERIOD_H1, está errado tem que ser 0 para vender a mercado ou o valor do bid (já que estamos vendendo queremos como oposto a melhor compra);
  • PRICE_CLOSE, errado coloque um preço essa é uma definição. O valor aqui representa seu stop;
  • 1, errado coloque zero para não ter nada. Aqui vai seu ponto de parada de ganho;
Provavelmente o que voce queria seria o "meutrade.SellStop" e não a venda a mercado.
Razão: