[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 253
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
Movido:
qaz2005 11.10.2011 09:30
Boa tarde a todos! Favor avisar, há um indicador personalizado, ele tem dois objetos. Seus valores eu posso descobrir, mas aqui não há como distingui-los, seja na linha superior ou na inferior. Não posso saber o número e a ordem dos amortecedores, ao instalar não há configurações. Na Internet leu que as configurações para a cor também vão como buffers, como se referir a elas através da função iCustom () ou talvez qualquer outra função para resolver este ponto?
Obrigado de antemão!
P.S. Existe alguma literatura sobre a linguagem MQL4? Eu já baixei e quase terminei um tutorial MQL4.
Os números tampão são contados a partir de "0",
iCustom(NULL, 0, "ind",150, 0,2);
onde 150 é o período,
0 é tampão,
2 é um bar.
https://docs.mql4.com/ru/indicators/iCustom
por exemplo
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
portanto, provavelmente azul = 0 tampão
e vermelho = 1
Alexander, obrigado por compartilhar sua experiência! Mas pelo caminho tenho uma pergunta, como é feita a enumeração de moedas? Ou é o nome da moeda na OrderSend() f-i no lugar de Symbol()? E você poderia explicar como colocar seu exemplo no código? Mais uma vez obrigado por sua ajuda! :)
Romano, basicamente explicado.
Em todos os lugares onde Symbol() é especificado em Expert Advisor, coloque por exemplo: SymbolMax[nnnn]. Em OrderSend(), parece ser assimtick=OrderSend(SymbolMax[nnnn],OP_BUYSTOP,L,ur,0,sl,tp,CMM,MAGIC[I],0,Red);
Eu o escrevi em meu Consultor Especialista e você estabelece seus próprios valores lá. Você pode definir a lista de moedas, por exemplo:
string SymbolMax[4] = {"EURUSD", "GBPUSD", "USDCHF", "USDJPY"};
Talvez, alguém a tenha implementado de outra forma, mas esta é minha pesquisa de moeda - veja o código abaixo. Coloco em primeiro lugar o início da função. Além disso, fiz um atraso de 5 segundos para evitar que as mensagens saltassem por aí.
Estou tendo um problema com um looping de modificação,
a modificação é representada como uma função definida pelo usuário
O mais interessante é que a função de trilha padrão funciona com essas duas funções, sozinha também funciona bem, mas quando uso uma modificação fractal com Breakeven, recebo modificações infinitas com fractal e Breakeven
Baseei-me na modificação do https://book.mql4.com/ru/trading/ordermodify
Tenho a impressão de que o critério para modificar o Breakeven não está definido corretamente, como posso corrigi-lo para que não congele?
//ф-я модификации ордеров безубыток
int mod_b()
{
//--------------------------------------------------------------- 2 --
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
int Tip=OrderType(); // Тип ордера
if(OrderSymbol()!=Symb||Tip>1)continue;// Не наш ордер
double SL=OrderStopLoss(); // SL выбранного орд.
double TP =OrderTakeProfit(); // TP выбранного орд.
double Price =OrderOpenPrice(); // Цена выбранн. орд.
int Ticket=OrderTicket(); // Номер выбранн. орд.
//------------------------------------------------------ 3 --
while(true) // Цикл модификации
{
double TS=Tral_Stop; // Исходное значение
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Миним. дист&&((SL<TS && Tip==0)||(SL>TS && Tip==1))
if (TS < Min_Dist) // Если меньше допуст.
TS=Min_Dist; // Новое значение TS
//--------------------------------------------------- 4 --
bool Modify=false; // Не назначен к модифи
switch(Tip) // По типу ордера
{
case 0 : // Ордер Buy
if (NormalizeDouble(SL,Digits)< // Если ниже желаем.
NormalizeDouble(Bid-TS*Point,Digits))
{
SL=Price+18*Point; // то модифицируем его
string Text="Buy "; // Текст для Buy
Modify=true; // Назначен к модифи.
}
break; // Выход из switch
case 1 : // Ордер Sell
if (NormalizeDouble(SL,Digits)> // Если выше желаем.
NormalizeDouble(Ask+TS*Point,Digits)
|| NormalizeDouble(SL,Digits)==0)//или равно нулю
{
SL=Price-18*Point; // то модифицируем его
Text="Sell "; // Текст для Sell
Modify=true; // Назначен к модифи.
}
} // Конец switch
if (Modify==false) // Если его не модифи
break; // Выход из while
//--------------------------------------------------- 5 --
Alert ("Модификация ",Text,Ticket,". Ждём ответ..");
bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифи его!
//--------------------------------------------------- 6 --
if (Ans==true) // Получилось :)
{
Alert ("Ордер ",Text,Ticket," модифицирован:)");
break; // Из цикла модифи.
}
{
//--------------------------------------------------------------- 2 --
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
int Tip=OrderType(); // Тип ордера
if(OrderSymbol()!=Symb||Tip>1)continue;// Не наш ордер
double SL=OrderStopLoss(); // SL выбранного орд.
//------------------------------------------------------обсчет фрактала
int f = 3; //номер бара с которого идет проверка наличия фрагтала
int DnN = 0, UpN = 0; //порядковый номер присвоен к направлению(upper, lower)
double UpFr = 0, DnFr = 0; //числовое значение фрагтала выраженное в еденице валюты присвоен к направлению(upper, lower)
while (f < Bars && (UpFr == 0 || DnFr == 0))
{
if (iFractals(Symbol(), 0, MODE_UPPER, f) != 0)
if (UpFr == 0)
{
UpFr = iFractals(Symbol(), 0, MODE_UPPER, f);//фрактальная отложка вверх(buy)
UpN = f;
}
if (iFractals(Symbol(), 0, MODE_LOWER, f) != 0)
if (DnFr == 0)
{
DnFr = iFractals(Symbol(), 0, MODE_LOWER, f);//фрактальная отложка вниз(sell)
DnN = f;
}
f++;
}
//------------------------------------------------------ 3 --
while(true) // Цикл модификации
{
double UD;
double TS=UD; // Исходное значение
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//Миним. дист
if(Tip==0)
UD=DnFr;
if(Tip==1)
UD=UpFr;
if (TS < Min_Dist) // Если меньше допуст.
TS=Min_Dist; // Новое значение TS
//--------------------------------------------------- 4 --
bool Modify=false; // Не назначен к модифи
switch(Tip) // По типу ордера
{
case 0 : // Ордер Buy
if (NormalizeDouble(SL,Digits)< // Если ниже желаем.
NormalizeDouble(UD,Digits))
{
SL=UD; // то модифицируем его
string Text="Buy "; // Текст для Buy
Modify=true; // Назначен к модифи.
}
break; // Выход из switch
case 1 : // Ордер Sell
if (NormalizeDouble(SL,Digits)> // Если выше желаем.
NormalizeDouble(UD,Digits)
|| NormalizeDouble(SL,Digits)==0)//или равно нулю
{
SL=UD; // то модифицируем его
Text="Sell "; // Текст для Sell
Modify=true; // Назначен к модифи.
}
} // Конец switch
if (Modify==false) // Если его не модифи
break; // Выход из while
//--------------------------------------------------- 5 --
double TP =OrderTakeProfit(); // TP выбранного орд.
double Price =OrderOpenPrice(); // Цена выбранн. орд.
int Ticket=OrderTicket(); // Номер выбранн. орд.
Alert ("Модификация ",Text,Ticket,". Ждём ответ..");
bool Ans=OrderModify(Ticket,Price,SL,TP,0);//Модифи его!
//--------------------------------------------------- 6 --
if (Ans==true) // Получилось :)
{
Alert ("Ордер ",Text,Ticket," модифицирован:)");
break; // Из цикла модифи.
}
Olá Prezados usuários do fórum.
Como posso solicitar citações de outros prazos? Tenho um modelo em D e meu indicador precisa de citações BAIXO, ALTO, ABERTO, FECHADO de prazos menores (M30, H1, H4, por exemplo).
Olá Prezados usuários do fórum.
Como posso solicitar citações de outros prazos? Tenho um modelo em D e meu indicador precisa de citações BAIXO, ALTO, ABERTO, FECHADO de prazos menores (M30, H1, H4, por exemplo).
Boa noite a todos. digam-me qual é o erro aqui. aqui está um pedaço de código.
//+
+ //| Função Start |
//+ +
void start()
{
//
check for history and trading
if(Bars<100 ||| IsTradeAllowed()==false) return;
// calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
if (!IfTrueThenCountBarWork) return (0);
for (int i = OrderTotal() - 1; i >= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)
if (OrderMagicNumber() == 700000) <---- NESTE ESTRANGEIRO DISSE ERRO!!!
CloseAfterSomeSomeBar (CountBar, OrderTicket());
}
}
Boa noite a todos. por favor, digam-me qual é o erro aqui. aqui está um pedaço de código.
//+------------------------------------------------------------------+
//| Função Start |
//+------------------------------------------------------------------+
início nulo()
{
//---- verificação de histórico e comércio
if(Bars<100 || IsTradeAllowed()==falso) retorna;
//---- calcular pedidos em aberto pelo símbolo atual
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
senão CheckForClose();
se (!IfTrueThenCountBarWork) retornar (0);
para (int i = OrderTotal() - 1; i >= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES)
se (OrderMagicNumber() == 700000) <---- NESTE ERRO FALA!!!
CloseAfterSomeBar (CountBar, OrderTicket())
}
}
PapaYozh:
Пропущен символ ";"
obrigado!!! Não notou no início))))
Outra pergunta aos especialistas. como entrar corretamente na condição de abertura: Fechar[2]<Fechar[3] por n por cento para vender. para comprar o oposto, é claro. e n pode ser otimizado? obrigado de antemão!
void CheckForOpen()
{
double ma;
int res;
//
go trading only for first tiks of new bar if(Volume[0]>1) return;
// get Moving Average
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0)
//---- condições de venda
if(Open[1]>ma && Close[1]<ma)
{
res=OrderSend(Symbol(),OP_SELLL,LotsOptimized(),Bid,3,0,0,",MAGICMA,0,Red);
return;
}
//
condições de compra
if(Open[1]<ma && Close[1]>ma) {
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,",MAGICMA,0,Blue);
return;
}
Diga-me onde errei plz... ou se for o próprio MT4, mas minhas ordens de compra só abrem na barra alta, e ordens de venda só na barra fechada =) Embora eu nem sequer tenha estipulado estas condições no código do Expert Advisor =)