[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 22
ajuda, por favor, o pedido deve fechar a 4 vezes a distância do preço alto ao preço aberto
Onde eu fiz asneira?
todos os pedidos fecham dentro de 3 pips após a abertura
Você já tentou calcular o resultado de sua fórmula? Se não, então faça-o, porque estou recebendo algumas besteiras. Talvez seja porque eu não conheça todas as condições.
externdouble lot=0.1;
externdouble tp=0;
externdouble sl=0;
int Real_Order=-1; // Пока рыночных нетstring Symb=Symbol; // Финанс. инструментint start() // Спец. функция start()
{
OrderSend(Symbol(),OP_BUY,0.1,Ask,0,Bid-sl*Point,Ask+tp*Point);
if(IsDemo()) PlaySound("alert.wav");
for (int i=1; i<=OrdersTotal(); i++) //Цикл по всем ордерам,..
{ //отражённым в терминалеif(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
{
//-------------------------------------------------------------- if (OrderSymbol()!= Symb) continue; // Не наш фин.инструм.int Tip=OrderType(); // Тип ордераif (Real_Order>1) continue; //отложник ордер //------------------------------------------------------ 4 --double Price=OrderOpenPrice(); // Цена ордераifNormalizeDouble(tp,sl,Digits) // Выбор самого близкого орд
{
Real_Order=Tip; // Есть рыночный ордерint Ticket=OrderTicket(); // Номер ордераdouble Lot=OrderLots(); // Количество лотов
}
} //Конец анализа ордера
} //Конец перебора орд.//---------------------------------------------------------------------+while(true) // Цикл закрытия орд.
{
if (Real_Order==-1) // Если рыночных нет
{
Alert("По ",Symb," рыночных ордеров нет");
break; // Выход из цикла закр
}
//--------------------------------------------------------- 7 --switch(Real_Order) // По типу ордера
{
case0: double Price_Cls=Bid; // Ордер Buystring Text="Buy "; // Текст для Buybreak; // Из switchcase1: Price_Cls=Ask; // Ордер Sell
Text="Sell "; // Текст для Sell
}
Alert("Попытка закрыть ",Text," ",Ticket,". Ожидание ответа..");
bool Ans=OrderClose(Ticket,Lot,Price_Cls,2);// Закрытие ордера//--------------------------------------------------------- 8 --if (Ans==true) // Получилось :)
{
Alert ("Закрыт ордер ",Text," ",Ticket);
break; // Выход из цикла закр
}
//--------------------------------------------------------- 9 --int Error=GetLastError(); // Не получилось :(switch(Error) // Преодолимые ошибки
{
case135:Alert("Цена изменилась. Пробуем ещё раз..");
RefreshRates(); // Обновим данныеcontinue; // На след. итерациюcase136:Alert("Нет цен. Ждём новый тик..");
while(RefreshRates()==false) // До нового тикаSleep(1); // Задержка в циклеcontinue; // На след. итерациюcase146:Alert("Подсистема торговли занята. Пробуем ещё..");
Sleep(500); // Простое решениеRefreshRates(); // Обновим данныеcontinue; // На след. итерацию
}
switch(Error) // Критические ошибки
{
case2 : Alert("Общая ошибка.");
break; // Выход из switchcase5 : Alert("Старая версия клиентского терминала.");
break; // Выход из switchcase64: Alert("Счет заблокирован.");
break; // Выход из switchcase133:Alert("Торговля запрещена");
break; // Выход из switchdefault: Alert("Возникла ошибка ",Error);//Другие варианты
}
break; // Выход из цикла закр
}
return; // Выход из start()
}
Na verdade, você pode clicar duas vezes na mensagem de erro e o cursor irá para o local especificado (a propósito) onde ocorreu o erro de compilação, ou seja, aqui: (8, 13)
Depois disso, outros erros serão jogados... :)
Mova a linha acima para o início da função start()
Pessoal, precisamos de alguma ajuda. Descrevendo a situação.
o preço atual é 1,4100 (por exemplo) preciso encontrar uma barra cuja abertura esteja dentro de (mais ou menos 10 pt de 1,4100) de 1,4090 a 1,4110 - tudo bem.
Por exemplo, o programa encontrou a barra com a abertura em 1.4105 que me serve.
Então o programa deve comparar esta barra com a barra à sua esquerda e à direita e, se for inferior, será adequada.
Olá. Ajuda para chupetas: Eu tenho uma EA que pode fazer pedidos pendentes no mínimo e máximo da vela anterior. Abertura na direção da vela.
A necessidade:
- Para mudar a direção de abertura, ou seja, compra pendente para - venda pendente.
- Fazer min e max da vela anterior em vez de min e max do dia anterior
- Deixar tudo o resto como está, ou seja, eliminar ordens, parâmetros de lote, stop-los, número mágico
Todas as minhas ações ou levam ao erro 130 no testador ou não compilam de forma alguma. Obrigado por qualquer conselho.
Abaixo está o código de trabalho, sem minha intervenção.
Lote duplo externo = 0,01;
externo int StopLoss = 0;
externo int TakeProfit = 0;
externo int Magic = 618;
int Up_bars = 0;
int Down_bars = 0;
duplo StopLoss_new = 0;
duplo TakeProfit_new = 0;
//+
+
//| função de inicialização de peritos |
//+ +
int init()
{
//
//
return(0); }
//+
+
//| função de desinicialização especializada |
//+ +
int deinit()
{
// //------------------------------------------------------------------
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//------------------------------------------------------------------
for( int cnt=0;cnt<OrdersTotal();cnt++)
{
if (OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES)>0)
{
if (
(OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
&& OrderMagicNumber() == Magic
&& OrderSymbol() == Symbol()
&& OrderComment() != DoubleToStr(Bars,0)
)
{
Comentário("okkk");
OrderDelete(OrderTicket());
}
}
}
StopLoss_new = StopLoss;
TakeProfit_new = TakeProfit;
if (Up_bars != Bars)
{
if (High[1]-Ask >= MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
{
if (StopLoss_new != 0) StopLoss_new = NormalizeDouble(High[1]-StopLoss*Point,Digits);
if (TakeProfit_new != 0) TakeProfit_new = NormalizeDouble(High[1]+TakeProfit*Point,Digits);
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble(High[1],Digits),10,StopLoss_new,TakeProfit_new,DoubleToStr(Bars,0),Magic,0,Green) < 0)
{
Sleep(1000);
RefreshRates();
}
else
{
Up_bars = Bars;
}
}
}
StopLoss_new = StopLoss;
TakeProfit_new = TakeProfit;
if (Down_bars != Bars)
{
if (Bid-Low[1] >= MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
{
if (StopLoss_new != 0) StopLoss_new = NormalizeDouble(Low[1]+StopLoss*Point,Digits);
if (TakeProfit_new != 0) TakeProfit_new = NormalizeDouble(Low[1]-TakeProfit*Point,Digits);
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Low[1],Digits),10,StopLoss_new,TakeProfit_new,DoubleToStr(Bars,0),Magic,0,Green) < 0)
{
Sleep(1000);
RefreshRates();
}
senão
{
Down_bars = Bars;
}
}
}
//
return(0); }
//+------------------------------------------------------------------+
Olá. Ajude um boneco a descobrir isso:
Capitão Obviedade... e ainda assim alguém me dá uma dica.
Vou lhe dar uma dica - ponha essa expressão em palavras. E você vai ver que errou.
PS.
Se é tão óbvio para você onde procurar por um erro, então por que perguntar?
Se Erro 130. Reconsiderar a parada e o takeaway.
ajuda, por favor, o pedido deve fechar a 4 vezes a distância do preço alto ao preço aberto
Onde eu fiz asneira?
todos os pedidos fecham dentro de 3 pips após a abertura
Você já tentou calcular o resultado de sua fórmula? Se não, então faça-o, porque estou recebendo algumas besteiras. Talvez seja porque eu não conheça todas as condições.
Apenas um erro - não sei como corrigi-lo. Onde está o problema ?
Símbolo- inicialização esperada C:\Program Files\MetaTrader Finam 1.mq4 (8, 13)
Símbolo - inicialização esperada C:\Program Files\MetaTrader Finam 1.mq4 (8, 13)
alex12, especifique algo específico, como
Apenas um erro - não sei como corrigi-lo. Onde está o problema ?
Símbolo - inicialização esperada C:\Program Files\MetaTrader Finam 1.mq4 (8, 13)
Símbolo - inicialização esperada C:\Program Files\MetaTrader Finam 1.mq4 (8, 13)
Você tem:
Você precisa fazer isso:
Na verdade, você pode clicar duas vezes na mensagem de erro e o cursor irá para o local especificado (a propósito) onde ocorreu o erro de compilação, ou seja, aqui: (8, 13)Depois disso, outros erros serão jogados... :)
Mova a linha acima para o início da função start()
É um começo - depois lidar com outros erros...
Olá a todos.
Pessoal, precisamos de alguma ajuda. Descrevendo a situação.
o preço atual é 1,4100 (por exemplo) preciso encontrar uma barra cuja abertura esteja dentro de (mais ou menos 10 pt de 1,4100) de 1,4090 a 1,4110 - tudo bem.
Por exemplo, o programa encontrou a barra com a abertura em 1.4105 que me serve.
Então o programa deve comparar esta barra com a barra à sua esquerda e à direita e, se for inferior, será adequada.
Artem, o truque aqui é que existe uma linha como esta abaixo:
Portanto, a maneira como você sugeriu não faz muito sentido - se eu entendi corretamente o que o alex12 quer.