Olá! tentei criar um indicador que usa 2 símbolos (EURUSD e GBPUSD por exemplo), não desenha (dá um erro 4806) ... Recebo alças indicadoras na função OnInit (iRSI por exemplo) de cada símbolo, copio os dados indicadores para buffers e realizo outras operações com eles ...Recebe dados indicadores para um símbolo (o símbolo que coincide com o símbolo no gráfico, ao qual anexei o indicador) está ok, mas os dados indicadores para o segundo símbolo não são recebidos ... Ou seja, recebe dados apenas para o símbolo que coincide com o símbolo no gráfico, ao qual está anexado ... o que estou a fazer mal?
FinEngineer: Olá! tentei criar um indicador que usa 2 símbolos (EURUSD e GBPUSD por exemplo), não desenha (dá um erro 4806) ... recebo alças indicadoras na função OnInit (iRSI por exemplo) de cada símbolo, copio dados indicadores para buffers e faço outras operações com eles ...Recebe dados indicadores para um símbolo (o mesmo símbolo que coincide com o símbolo no gráfico, ao qual anexei o indicador) está ok, mas os dados indicadores para o segundo símbolo não são recebidos ... ou seja, recebe dados apenas para o símbolo que coincide com o símbolo no gráfico, ao qual o indicador está anexado ... o que estou a fazer mal?
Mostre-me então a parte do código que causou o problema.
Estou a afixar o código inteiro, porque nada funciona, no mql4 tudo era muito mais fácil, talvez seja porque não estou habituado... estas pegas e amortecedores auxiliares estão a matar o meu cérebro.
Penso que o significado é claro (diferença em rsi de 2 símbolos correlatos), por favor ajude.... a apontar os erros?
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
Se o MACD estiver anexado ao gráfico EURUSD, tudo será desenhado, se estiver anexado a outro gráfico - o erro 4806 aparecerá... Como posso fazer para que neste indicador eu possa usar quantos símbolos eu quiser?
Se souber como fazer funcionar o indicador previamente afixado, ficar-lhe-ei muito grato.
Se não o desejar, tem de contar correctamente as variáveis.
Tive a ideia do ficheiro Schablon com sucesso misto, trouxe-o um pouco às minhas condições e funciona. No entanto, existe um impasse significativo para mim - eles estão colocados na vela seguinte, não num carrapato. Aqui está a parte da EA.
Com sucesso variável obtive a essência do ficheiro Schablon, ajustei-o um pouco às minhas condições e Hurra - paragens e lucros são estabelecidos. No entanto, existe um impasse significativo para mim - eles estão colocados na vela seguinte, não num carrapato. Aqui está uma parte do código.
inputdouble TP = 0.003;
inputdouble STR = 0.0012;
inputdouble TR = 0.0002;
//=============================================== //Един вид извикване на модификация на отворената позицияdouble buy_trail = 0;
double sel_trail = 0;
double SL,T_P,Open;
ulong L_S;
Ну ладно-обяснения:
if(PositionSelect(_Symbol)){//Ест ли позиция по символа
Open = PositionGetDouble(POSITION_PRICE_OPEN);//цена опен для поза
SL = PositionGetDouble(POSITION_SL);//цена стоп для поза
T_P = PositionGetDouble(POSITION_TP);//цена тейк для поза
Bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);//цена бид
Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);//цена аск
L_S = SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);//стоп ниво,если ест такое-оно в пункты
buy_trail = NormalizeDouble(Bid - Open,Digits());//вычисляем разстояние от цена бид и цена опен позиции-ето для бай
sel_trail = NormalizeDouble(Open - Ask,Digits());//вычисляем разстояние от цена опен позиции и цена аск-ето для селif(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)//если ест бай поза
{
if(buy_trail > STR)//если разстояние болше указаное
{
if(NormalizeDouble((Bid - STR),Digits()) >= Open && Open > SL)
//если цена бид минус указаное разстояние болше щем цена опен и цена опен болше цена стоп-вызиваем модификация//сама модификация-для стоп будет цена опен,цена тейк не меняем.
{
ModifyPosition(_Symbol,Open,T_P);
}
if(NormalizeDouble((Bid - TR),Digits()) > SL && Open <= SL)
//если цена бид минус указаное разстояние TR = 0.0002 болше уже от новый стоп(который поменяли уже) и цена опен менше новый стоп //вызиваем модификация//сама модификация - для стоп будет прошлый стоп минус стоп ниво* _Point(что б стали пипси) плюс указаное TR,цена тейк не меняем.//Т.е. будем двигат стоп через каждые 2 пипса
{
ModifyPosition(_Symbol,NormalizeDouble(((SL - L_S * _Point) + TR),Digits()),T_P);
}
}
}
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
if(sel_trail > STR)
{
if(NormalizeDouble((Ask + STR),Digits()) <= Open && Open < SL)
{
ModifyPosition(_Symbol,Open,T_P);
}
if(NormalizeDouble((Ask + TR),Digits()) < SL && Open >= SL)
{
ModifyPosition(_Symbol,NormalizeDouble(((SL +L_S * _Point)- TR),Digits()),T_P);
}
}
}
}
//===============================================
O código deve sempre conter condições para algumas acções, mas tudo deve ser verificado e ter alguma lógica.
Se quiser ajudar, imprima(" ", ); ) e veja o resultado.
As descrições são todas claras e funcionam. Mas isto é uma modificação para "breakeven" e "trailing". Devo escrever uma modificação para definir StopLimit e TakeProfit após a abertura da encomenda, ou seja
1. abertura do pedido
--------
2. Modificação para parar o limite (este ainda não está lá!)
Há algum programador MQL5 nesta linha!? Estou a fazer uma pergunta no ramo errado? Então diga-me como fazer uma pergunta aos criadores? A questão acima é elementar para um programador experiente...
Olá! tentei criar um indicador que usa 2 símbolos (EURUSD e GBPUSD por exemplo), não desenha (dá um erro 4806) ... recebo alças indicadoras na função OnInit (iRSI por exemplo) de cada símbolo, copio dados indicadores para buffers e faço outras operações com eles ...Recebe dados indicadores para um símbolo (o mesmo símbolo que coincide com o símbolo no gráfico, ao qual anexei o indicador) está ok, mas os dados indicadores para o segundo símbolo não são recebidos ... ou seja, recebe dados apenas para o símbolo que coincide com o símbolo no gráfico, ao qual o indicador está anexado ... o que estou a fazer mal?
Estou a afixar o código inteiro, porque nada funciona, no mql4 tudo era muito mais fácil, talvez seja porque não estou habituado... estas pegas e amortecedores auxiliares estão a matar o meu cérebro.
Penso que o significado é claro (diferença em rsi de 2 símbolos correlatos), por favor ajude.... a apontar os erros?
#property copyright "Copyright 2012, MetaQuotes Software Corp.erro #1
falha na utilização da chave SRC
Tal erro ocorre, por exemplo, se pegar num indicador MACD padrão personalizado e alterar a seguinte linha
ExtFastMaHandle=iMA(NULL,0,InpFastEMA,0,MODE_EMA,InpAppliedPrice);
para
ExtFastMaHandle=iMA("EURUSD",0,InpFastEMA,0,MODE_EMA,InpMAAplicadoPreço);
Se o MACD estiver anexado ao gráfico EURUSD, tudo será desenhado, se estiver anexado a outro gráfico - o erro 4806 aparecerá... Como posso fazer para que neste indicador eu possa usar quantos símbolos eu quiser?
Se souber como fazer funcionar o indicador previamente afixado, ficar-lhe-ei muito grato.
Lester: Aqui coloco um modelo, no interior há uma modificação que mostra como rastejar.
https://www.mql5.com/ru/forum/6343/page73
Se não o desejar, tem de contar correctamente as variáveis.
Tive a ideia do ficheiro Schablon com sucesso misto, trouxe-o um pouco às minhas condições e funciona. No entanto, existe um impasse significativo para mim - eles estão colocados na vela seguinte, não num carrapato. Aqui está a parte da EA.
Com sucesso variável obtive a essência do ficheiro Schablon, ajustei-o um pouco às minhas condições e Hurra - paragens e lucros são estabelecidos. No entanto, existe um impasse significativo para mim - eles estão colocados na vela seguinte, não num carrapato. Aqui está uma parte do código.
O código deve sempre conter condições para algumas acções, mas tudo deve ser verificado e ter alguma lógica.
Se quiser ajudar, imprima(" ", ); ) e veja o resultado.
As descrições são todas claras e funcionam. Mas isto é uma modificação para "breakeven" e "trailing". Devo escrever uma modificação para definir StopLimit e TakeProfit após a abertura da encomenda, ou seja
1. abertura do pedido
--------
2. Modificação para parar o limite (este ainda não está lá!)
------
3. modificação para o Breakeven
4.Modificação para a paragem de reboque
5.Fechar encomenda
Pode utilizar o ponto 2 para modificar a ordem, mas apenas no início do bar seguinte.
Uma função é escrita para abrir e comer: