Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Até agora, exatamente assim:
//+------------------------------------------------------------------+
//| Fibo trading.mq4 |
//| Minodi |
//| minodi@yandex.ru |
//+------------------------------------------------------------------+
#propriedade copyright "Minodi
#link da propriedade "minodi@yandex.ru"
período int externo_EMA = 233,
período_SMA = 233,
stoploss = 30,
Lote duplo externo = 0,01;
fio externo SesEnd ="22:00"; // hora limite para Hai ou Low
//+------------------------------------------------------------------+
//| função de início do programa de script |
//+------------------------------------------------------------------+
int start()
{
//------- Preços diários, fibras e tempo de renderização baixo--------------+
int shift = iBarShift(NULL,1440,Time[0]) + 1;
duplo HiPrice = iHigh(NULL,1440,shift); //High price
duplo LoPrice = iLow(NULL,1440,shift); // preço baixo
duplo OpPrice = iOpen (NULL,1440,shift); // preço aberto
duplo ClPrice = iClose (NULL,1440,turno); // Preço de fechamento
data/hora StTime = iTime(NULL,1440,shift); // ?
if(TimeDayOfWeek(StTime)==0/*Sunday*/)
{//Adicionar sextas-feiras altas e baixas
HiPrice = MathMax(HiPrice,iHigh(NULL,1440,shift+1));
LoPrice = MathMin(LoPrice,iLow(NULL,1440,shift+1))
OpPrice = iOpen(NULL,1440,shift+1);
ClPrice = iClose (NULL,1440,shift+1);
}
duplo Pivot =(HiPrice+LoPrice+ClPrice)/3;
faixa dupla =HiPrice-LoPrice;
duplo Fibo138 =1,382*Range+LoPrice;
duplo Fibo162 =1,618*Range+LoPrice;
duplo Fibo_138 =LoPrice-(1.382*Range-Range);
duplo Fibo_162 =LoPrice-(1.618*Range-Range-Range);
///---------------- HiTime e Low-----------------------------------------+
em HiTime,LoTime;
no tempo int; // no próximo rolo de barras os valores
if (time!=Time[0]){HiTime=0;LoTime=0;time=Time[0];}
if (High[0]>HiPrice)HiTime=TimeCurrent();
if (Low[0]<LoPrice)LoTime=TimeCurrent();
Comentário ("Nesta barra: "+"\n Time High Point="+HiTime+"\n Time Low Point="+LoTime);
//-----------------Ценовой диапазон Демарка-------------------------------+
int currentDay, i=0; //
se (currDay!=TimeDay(Tempo[i]))
{
if (ClPrice<OpPrice) duplo x=(HiPrice + LoPrice + LoPrice)/2;
if (ClPrice>OpPrice) x=(HiPrice + LoPrice + ClPrice + HiPrice)/2;
if (ClPrice==OpPrice) x=(HiPrice + LoPrice + ClPrice + ClPrice)/2;
i++;
}
duplo MaxDay = x - LoPrice; // faixa de preço Demark
duplo MinDay = x - HiPrice; // faixa de preço Demark
// -----------Скользящие средние---------------------------------------------+
duplo EMA = iMA(15,0,período_EMA,0,MODE_EMA, PRICE_CLOSE,0);
duplo SMA = iMA(15,0,período_SMA,0,MODE_SMA,PRICE_CLOSE,0);
duplo EMA1 = iMA(60,0,período_EMA,0,MODE_EMA,PRICE_CLOSE,0);
duplo SMA1 = iMA(60,0,período_SMA,0,MODE_SMA,PRICE_CLOSE,0);
//----------------Удаление вчерашних ордеров---------------------------------+
//------------------Ордера----------------------------------------------------+
Caros membros do fórum, verifiquem o código, pretendo adicionar gradualmente
Estes são os parâmetros que eu lhe dei, coloque-os antes de começar
int HiTime,LoTime;
int time; // на следующем баре обнкляем значения
Вот эти параметры ято я давал, поместите перд стартом
int HiTime,LoTime;
int time; // на следующем баре обнкляем значения
Caros membros do fórum, por favor, prestem atenção e digam-nos quais erros foram cometidos:
//+------------------------------------------------------------------+
//| Fibo trading.mq4 |
//| Minodi |
//| minodi@yandex.ru |
//+------------------------------------------------------------------+
#propriedade copyright "Minodi
#link da propriedade "minodi@yandex.ru"
período int externo_EMA = 233,
período_SMA = 233,
stoploss = 30,
Magia = 55;
Lote duplo externo = 0,01;
fio externo SesEnd ="22:00"; // hora limite para Hai ou Low
em HiTime,LoTime;
no tempo int; // nos próximos valores de roll up da barra
//+------------------------------------------------------------------+
//| função de início do programa de script |
//+------------------------------------------------------------------+
int start()
{
//------- Preços diários, fibras e tempo de renderização baixo--------------+
int shift = iBarShift(NULL,1440,Time[0]) + 1;
duplo HiPrice = iHigh(NULL,1440,shift); // Hai price
duplo LoPrice = iLow(NULL,1440,shift); // preço baixo
duplo OpPrice = iOpen (NULL,1440,shift); // preço aberto
duplo ClPrice = iClose (NULL,1440,turno); // Preço de fechamento
data/hora StTime = iTime(NULL,1440,shift); // ?
if(TimeDayOfWeek(StTime)==0/*Sunday*/)
{//Adicionar sextas-feiras altas e baixas
HiPrice = MathMax(HiPrice,iHigh(NULL,1440,shift+1));
LoPrice = MathMin(LoPrice,iLow(NULL,1440,shift+1))
OpPrice = iOpen(NULL,1440,shift+1);
ClPrice = iClose (NULL,1440,shift+1);
}
duplo Pivot =(HiPrice+LoPrice+ClPrice)/3;
faixa dupla =HiPrice-LoPrice;
duplo Fibo138 =1,382*Arranque;
duplo Fibo162 =1,618*Arranque;
duplo Fibo_138 =(LoPrice-1.382*Range)-Range;
double Fibo_162 =(LoPrice-1.618*Range)-Range;
//---------------- time hai and low-----------------------------------------+
if (time!=Time[0]){HiTime=0;LoTime=0;time=Time[0];}
if (High[0]>HiPrice)HiTime=TimeCurrent();
if (Low[0]<LoPrice)LoTime=TimeCurrent();
Comentário ("Nesta barra: "+"\n Time High Point="+HiTime+"\n Time Low Point="+LoTime);
//-----------------Ценовой диапазон Демарка-------------------------------+
int currentDay, i=0; //
se (currDay!=TimeDay(Tempo[i]))
{
if (ClPrice<OpPrice) duplo x=(HiPrice + LoPrice + LoPrice)/2;
if (ClPrice>OpPrice) x=(HiPrice + LoPrice + ClPrice + HiPrice)/2;
if (ClPrice==OpPrice) x=(HiPrice + LoPrice + ClPrice + ClPrice)/2;
i++;
}
duplo MaxDay = x - LoPrice; // faixa de preço Demark
duplo MinDay = x - HiPrice; // faixa de preço Demark
// -----------Скользящие средние---------------------------------------------+
duplo EMA = iMA(15,0,período_EMA,0,MODE_EMA, PRICE_CLOSE,0);
duplo SMA = iMA(15,0,período_SMA,0,MODE_SMA,PRICE_CLOSE,0);
duplo EMA1 = iMA(60,0,período_EMA,0,MODE_EMA,PRICE_CLOSE,0);
duplo SMA1 = iMA(60,0,período_SMA,0,MODE_SMA,PRICE_CLOSE,0);
//------------------Ордера----------------------------------------------------+
se (HiTime>LoTime){
int ticket1 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,HiPrice,0,0,Pivot,NULL,Magic,58000,Red);
int ticket2 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,HiPrice,0,0,LoPrice,NULL,Magic,58000,Red);
int ticket3 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo138,0,0,HiPrice,NULL,Magic,58000,Red);
int ticket4 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo138,0,0,LoPrice,NULL,Magic,58000,Red);
int ticket5 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo162,0,0,HiPrice,NULL,Magic,58000,Red);
int ticket6 =OrderSend(Symbol(),OP_SELLLIMIT,Lot,Fibo162,0,0,Pivot,NULL,Magic,58000,Red);
}
se (HiTime<LoTime){
int ticket7=OrderSend(Symbol(),OP_BUYLIMIT,Lot,LoPrice,0,0,Pivot,NULL,Magic,58000,Red);
int ticket8=OrderSend(Symbol(),OP_BUYLIMIT,Lot,LoPrice,0,0,HiPrice,NULL,Magic,58000,Red);
int ticket9=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_138,0,0,LoPrice,NULL,Magic,58000,Red);
int ticket10=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_138,0,0,Pivot,NULL,Magic,58000,Red);
int ticket11=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_162,0,0,LoPrice,NULL,Magic,58000,Red);
int ticket12=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Fibo_162,0,0,Pivot,NULL,Magic,58000,Red);
}
if (HiTime>LoTime && ClPrice>Pivot) {
int ticket13=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Pivot,0,0,HiPrice,NULL,Magic,58000,Red);
int ticket14=OrderSend(Symbol(),OP_BUYLIMIT,Lot,Pivot,0,0,Fibo138,NULL,Magic,58000,Red);
}
se (HiTime<LoTime && ClPrice<Pivot)
int ticket15=OrderSend(Symbol(),OP_SELLLIMIT,Lot,Pivot,0,0,LoPrice,NULL,Magic,58000,Red);
int ticket16=OrderSend(Symbol(),OP_SELLLIMIT,Lot,Pivot,0,0,Fibo_138,NULL,Magic,58000,Red);
}
retorno(0);
//+------------------------------------------------------------------+
à primeira vista, os parâmetros:
na atuDaDa;
para começar
Cavalheiros do fórum, ajudem a entender....
Aqui está uma parte do código (o código principal é extraído do manual de construção do Expert Advisor)
// Função de pedido
// Variáveis globais:
// Mas_Ord_New[31][9] // Conjunto de pedidos últimos conhecidos
// Mas_Ord_Old[31][9] // Conjunto de pedidos anteriores (antigos)
// 1º índice = número do pedido
// [][0] não está definido
// [][1] preço do pedido aberto (abs. de um pedido (taxa abc)
// [][2] StopLoss de um pedido (taxa abc)
// [][3] TakeProfit de um pedido (taxa abc)
// [][4] Número do pedido
// [][5] número de lotes de um pedido. (Abc Rate)
// [][6] Tipo de pedido 0=B,1=S,2=BL,3=SL,4=BS,5=SS
// [][7] número mágico do pedido
// [][8] 0/1
if (Mas_Ord_Old[old][6]==0 && Bid>Mas_Ord_Old[old][2] && Bid<Mas_Ord_Old[old][3])
Inform(1, Mas_Ord_Old[old][4]); // Então o pedido de compra foi fechado pelo sinal do contador
ou se (Mas_Ord_Ord_Old[old][6]==0 && Bid<=Mas_Ord_Old[old][2])
Inform(19,Mas_Ord_Ord_Old[old][4],Mas_Ord_Old[old][2]) // significa que SL acionou
mais se (Mas_Ord_Old[old][6]==0 && Bid>=Mas_Ord_Old[old][3])
Inform(20,Mas_Ord_Old[old][4],Mas_Ord_Old[old][3]) // TA acionou
mais se (Mas_Ord_Old[old][6]==1 && Ask<Mas_Ord_Old[old][2] && Ask>Mas_Ord_Old[old][3])
Inform(2, Mas_Ord_Old[old][4]); // Então a ordem de venda é fechada por sinal de contador
ou se (Mas_Ord_Ord_Old[old][6]===1 && Ask>=Mas_Ord_Old[old][2])
Inform(19,Mas_Ord_Old[old][4],Mas_Ord_Old[old][2]) // significa que o SL acionou
mais se (Mas_Ord_Old[old][6]===1 && Ask<=Mas_Ord_Old[old][3])
Inform(20,Mas_Ord_Old[old][4],Mas_Ord_Old[old][3]); // TA acionou
O resto não tem interesse...
O problema: Em 90% dos casos é mostrado o parâmetro correto, ou seja, se SL for acionado, o parâmetro é "19", se TP é "20", se a ordem é fechada manualmente, ou por um sinal de contador, o parâmetro é "1" ou "2". Foi projetado dessa forma.
Mas às vezes (com bastante freqüência) em vez de "20" ele retorna "19" (ou vice-versa), ou mesmo "1"("2"). Por favor, ajude-me a descrever corretamente a função "se": como condições de fechamento dos pedidos.
Eu acho que a razão pode estar no arredondamento dos preços?