[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 423

 
sergeev:

bem, então a função OrderLots.


Não consigo entender esta função, por favor, ajude-me com um exemplo :)

diz: "A ordem deve ser pré-selecionada usando a função OrderSelect()", como seleciono todas as ordens abertas na mesma direção?

 
Elektronik:


Eu não consigo entender esta função, por favor me ajude com um exemplo:)

diz "A ordem deve ser pré-selecionada com OrderSelect()", como seleciono todas as ordens abertas na mesma direção?

Não há como. Somente em um loop passando um a um com OrderSelect().

 

Você pode me dizer se há um roteiro de stop loss que precisa ser inserido neste EA?

double x = ... // Задаем на сколько пипсов выше
double sl = NormalizeDouble(High[1] + x * Point, Digits); // Задаем значение стоплосс на x пипсов выше предпоследней свечи
Arquivos anexados:
 

Como posso reduzir o número de casas decimais sem arredondamento?

(DoubleToStr(NormalizeDouble(0,109,2),2)); = 0,11 e 0,10

 
Elektronik:

Como posso reduzir o número de casas decimais sem arredondamento?

(DoubleToStr(NormalizeDouble(0,109,2),2)); = 0,11 e 0,10

Há um milhão de maneiras, por exemplo, usando funções de corda para encontrar a localização de um ponto e truncar uma corda um caractere além dele. Mas se existe uma solução integrada pronta, por que devemos inventar problemas do nada? Basta mudar os dois para um e pronto.
 
Reshetov:
Há um milhão de maneiras, tais como usar funções de corda para encontrar a localização de um ponto e truncar a corda um caractere além dele. Mas se existe uma solução pronta para uso, pronta para uso, por que inventar problemas?


por favor, sugira uma solução já feita:)

 
Elektronik:


por favor me diga se esta é uma solução já feita:)

(DoubleToStr(NormalizeDouble(0.109,1))
 

Se não for arredondado, apenas este:

Reshetov с помощью строковых функций найти местоположение точки и обрезать строку на один символ далее нее

 

Por favor, ajude-me a entender o que está errado:

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

//| AAAA.mq4 |

//| |

//| |

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

#direitos de propriedade intelectual "".

#ligação de propriedade ""


fio externo TimeStart = "00:00"; // hora do início do período de controle

fio externo TimeEnd = "00:00"; //temporizador do final do período de controle.


duplo LOT externo = 0,01; // lote

magia int externa = 777; // magia



marga dupla,lote,SL,TP; // margem entrada,lote, stop loss e tomar variáveis de lucro

int Total,Ordens,tipOrdens,TradeDey; // tipo de variáveis,tipo de ordem,dia de negociação.


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

//| função do Expert Advisor |

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

int start() // Função de início de inicialização

{

data/hora Hora_Início = StringToTime(StringConcatenate(Day(),",Month(),",Year()," ",TimeStart, ":00")); // parâmetros de início //

datatimetime_End = StringToTime(StringConcatenate(Day(),",Month(),",Year()," ",TimeEnd, ":00")); // Parâmetros finais//



Total=0; // Se não houver ordens

for(int i=1; i<=OrdensTotal(); i++) // Laço de encomenda

{

se (OrderSelect(i-1,SELECT_BY_POS)==falso) // Se não houver ordens de mercado

{

se //Se:

{

int BarStart = iBarShift(NULL,PERÍODO_M1,Tempo_Início,falso); // procurar a barra no início do período de verificação no m1

int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); // procurar barra no final do período de referência em m1

duplo Preço_máximo=iHigh(NULL,0,iHighest(NULL,PERÍODO_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); // o maior valor de preço dentro do período

duplo Min_Price=iLow (NULL,0,iLowest (NULL,PERÍODO_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); // o valor de preço mais baixo dentro do período

}

if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // Configurações de exibição gráfica

{

ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0);

ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);

ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true);

ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start);

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);

ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End);

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);

}

se (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //condições para colocar uma ordem de compra pendente

NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue);

se (Licitação>Preço_Máximo)

Comentário ("Pedido pendente não pode ser colocado em licitação");

se (Licitação>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //condições para colocar ordem de venda pendente

NormalizeDouble(Ask + Max_Price-Min_Price,Digits), "UPDD",Magic,Blue);

se (Oferta<Preço_Máximo)

Comentário ("Pedido pendente não pode ser colocado na VENDA");

}

retornar;

}

Não pode compilar. caso contrário, deve colocar duas ordens pendentes para cima e para baixo a partir do intervalo.

 
Legeo777:

Por favor, ajude-me a entender o que está errado:

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

//| AAAA.mq4 |

//| |

//| |

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

#direitos de propriedade intelectual "".

#ligação de propriedade ""


fio externo TimeStart = "00:00"; // hora do início do período de controle

fio externo TimeEnd = "00:00"; //temporizador do final do período de controle.


duplo LOT externo = 0,01; // lote

magia int externa = 777; // magia



marga dupla,lote,SL,TP; // margem entrada,lote, stop loss e tomar variáveis de lucro

int Total,Ordens,TipOrders,TradeDey; // tipo de variáveis introduzidas,tipo de ordens,dia de negociação.


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

//| função do Expert Advisor |

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

int start() // Função de início de inicialização

{

data/hora Hora_Início = StringToTime(StringConcatenate(Day(),",Month(),",Year()," ",TimeStart, ":00")); // parâmetros de início //

datatimetime_End = StringToTime(StringConcatenate(Day(),",Month(),",Year()," ",TimeEnd, ":00")); // Parâmetros finais//



Total=0; // Se não houver ordens

for(int i=1; i<=OrdensTotal(); i++) // Laço de encomenda

{

se (OrderSelect(i-1,SELECT_BY_POS)==falso) // Se não houver ordens de mercado

{

se //Se: - remover
{

int BarStart = iBarShift(NULL,PERÍODO_M1,Tempo_Início,falso); // procurar a barra no início do período de verificação no m1

int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); // procura na barra fim do período de verificação em m1

duplo Preço_máximo=iHigh(NULL,0,iHighest(NULL,PERÍODO_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); // o maior valor de preço dentro do período

duplo Min_Price=iLow (NULL,0,iLowest (NULL,PERÍODO_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); // o valor de preço mais baixo dentro do período

}

if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // Configurações de exibição gráfica

{

ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0);

ObjectSet ("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);

ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true);

ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start);

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);

ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End);

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);

}

se (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //condições para colocar uma ordem de compra pendente - ordens pendentes não podem ser colocadas por Ask ou Bid

NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue);

se (Licitação>Preço_Máximo)

Comentário ("Pedido pendente não pode ser colocado em licitação");

se (Licitação>Preço_Mín_Preço) EncomendarEnviar(Símbolo(),OP_SELLSTOP,LOT,Bid,3,Preço_Mín_Preço, //condições para colocar ordem de venda pendente - mesmo

NormalizeDouble(Ask + Max_Price-Min_Price,Digits), "UPDD",Magic,Blue);

se (Bid<Max_Price) - deve haver um erro aqui

Comentário ("Pedido pendente não pode ser colocado na VENDA");

}

} - adicionar

retornar;

}

Não posso compilá-lo. Na verdade, ele deve colocar duas ordens pendentes para cima e para baixo a partir do intervalo.

Após as correções, ele deve compilar, mas provavelmente não funcionará - horários mal definidos, preços não normalizados, nenhuma verificação de proximidade de paradas para preços abertos.
Razão: