[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 308

 
Como faço para executar o script que acabei de editar sem reiniciar o mt4?
 
Estou tentando, mas não está funcionando. Estou recebendo muitos erros no código((.
 
Você vai compartilhar alguma coisa? )
 

Pode ser útil. Isto funciona bem!

No meta-editor, pressione F5 para compilar.

Importante: O meta editor deve ser executado a partir da mesma pasta que o terminal.

 

Alex, você está aqui por mim? Eu sou novo no mql4. Estou tentando descobrir este código.



#janela_do_cartão_indicador de propriedade
#property indicator_buffers 2
TempoTempo interno externo=0;//Se=0, então o atual
distância-interior externa=0;//distância da linha do fractal em pontos
fio externo FrApNam="Ap";//nome da linha correspondente ao fractal para cima.
fio externo FrDnNam="Dn";//nome da linha de acordo com o fractal para baixo.
cor exterior ClAp=azul;//cor da linha corresponde a Fractal para cima.
cor externa ClDn=Red;//cor da linha de acordo com Fractal Down.
comentário externo bool=verdadeiro;//permission to comment
//-----------------------------------------------------------------------------+
duplo FrPrise,znach1,znach2;
duplo FrApPrise=0,FrDnPrise=0;
duplo ind_buffer1[];
duplo ind_buffer2[];
//+----------------------------------------------------------------------------+
init() vazio
{if(TimeFrame==0){TimeFrame=Periodo();}
SetIndexBuffer(0,ind_buffer1);//Buffer

SetIndexBuffer(1,ind_buffer2);
retornar;}
void deinit(){

retornar;}


//+----------------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
limite int;
tmp duplo;
int i, j,k;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limite=barras_contadas_combarras;
//-----------------------------------------------------------------------------+
LineAp();
LineDn();
duplo FAP=NormalizarDuplo((FrApPrise-Distanse*Point),5);//Normalizar
duplo FDP=NormalizeDouble((FrDnPrise+Distanse*Point),5);
int diap=MathRound((FrApPrise-FrDnPrise)/Point);
ind_buffer1[0]=FAP;
ind_buffer2[1]=FDP;
Comentário("TimeFrame="+TimeFrame+
"\nApPrise =",FAP,
"\nDnPrise =",FDP,
"Canal nFractal ="
diap+"Ponto");



retorno(0);
}
//-----------------------------------------------------------------------------+
// procura por uma linha horizontal pelo nome, redraws se o preço mudar |
//-----------------------------------------------------------------------------+
LineDn(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise-Distance*Point,MarketInfo(Symbol(),MODE_DIGITS));
//Comentário(FrPrise);
if(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){retorno;}}}}
FrDnPrise=FrPrise;
ObjectDelete(FrDnNam);
SetHLine(ClDn,FrDnNam,FrDnPrise,0,1);
WindowRedraw();
retornar;}
//-----------------------------------------------------------------------------+
// procura por uma linha horizontal pelo nome, redraws se o preço mudou |
//-----------------------------------------------------------------------------+
LineAp(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise+Distanse*Point,MarketInfo(Symbol(),MODE_DIGITS));
if(ObjectFind(FrApNam)==0){
if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){retorno;}}}}
FrApPrise=FrPrise;
ObjectDelete(FrApNam);
SetHLine(ClAp,FrApNam,FrApPrise,0,1);
WindowRedraw();
retornar;}
//-----------------------------------------------------------------------------+
//| Descrição : Procure o fractal mais próximo. Devolve um nível de preço. |
//+----------------------------------------------------------------------------+
//| Parâmetros: |
//| sy - nome do instrumento ("" ou NULL - símbolo corrente) |
//| tf - cronograma ( 0 - TF atual) |
//| mode - fractal type (MODE_LOWER|MODE_UPPER) |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
if (sy===""" || sy=="0") sy=Symbol();
duplo f=0;
int d=MarketInfo(sy, MODE_DIGITS), s;
if (d==0) if (StringFind(sy, "JPY"<0) d=4; else d=2;

para (s=2; s<100; s++) {
f=iFractals(sy, tf, mode, s);
se (f!=0) retornar(NormalizeDuplo(f, d))
}
Imprimir("FindNearFractal(): Fractal não encontrado");
retorno(0);
}

//+----------------------------------------------------------------------------+
///| Descrição : Conjunto objeto OBJ_HLINE linha horizontal |
//+----------------------------------------------------------------------------+
//| Parâmetros: |
//| cl - cor da linha |
//| nm - nome ("" - tempo de abertura da barra atual) |
//| p1 - nível de preços (0 - Licitação) |
//| st - estilo linha (0 - linha simples) |
//| wd - largura de linha (0 - padrão) |
//+----------------------------------------------------------------------------+
void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
if (nm==""") nm=DoubleToStr(Time[0], 0);
se (p1<=0) p1=Licit;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0;)
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH , wd);
}

É necessário escrever um consultor especializado para este indicador que passaria o preço superior e o inferior em М1 e М5.

 
palomnik:

Alex, você está aqui por mim? Eu sou novo no mql4. Estou tentando descobrir este código.

#property indicator_chart_window
#property indicator_buffers 2 
extern int TimeFrame=0;//Если=0, то текуший
extern int Distanse=0;//Дистанция линии от фрактала в пунктах
extern string FrApNam="Ap";//Имя линии соотв.Фракталу вверх
extern string FrDnNam="Dn";//Имя линии соотв.Фракталу вниз
extern color ClAp=Blue;//Цвет линии соотв.Фракталу вверх
extern color ClDn=Red;//Цвет линии соотв.Фракталу вниз
extern bool comment=true;//Разрещение на комментарий
//-----------------------------------------------------------------------------+
double FrPrise,znach1,znach2;
double FrApPrise=0,FrDnPrise=0;
double ind_buffer1[];
double ind_buffer2[];
//+----------------------------------------------------------------------------+
void init()
{if(TimeFrame==0){TimeFrame=Period();}
SetIndexBuffer(0,ind_buffer1);//КОРОБКА

SetIndexBuffer(1,ind_buffer2);
return;}
void deinit(){

return;}


//+----------------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit;
double tmp;
int i, j,k;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//-----------------------------------------------------------------------------+
LineAp();
LineDn();
double FAP=NormalizeDouble((FrApPrise-Distanse*Point),5);//ЗНАЧЕНИЕ
double FDP=NormalizeDouble((FrDnPrise+Distanse*Point),5);
int diap=MathRound((FrApPrise-FrDnPrise)/Point);
ind_buffer1[0]=FAP;
ind_buffer2[1]=FDP;
Comment("TimeFrame="+TimeFrame+
"\nApPrise =",FAP,
"\nDnPrise =",FDP,
"\nFractal Channel ="
,diap+"Point");



return(0);
}
//-----------------------------------------------------------------------------+
// Ищет горизонтальную линию по имени перерисовывает если изменилась цена | 
//-----------------------------------------------------------------------------+
void LineDn(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise-Distanse*Point,MarketInfo(Symbol(),MODE_DIGITS));
//Comment(FrPrise);
if(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrDnPrise=FrPrise; 
ObjectDelete(FrDnNam);
SetHLine(ClDn,FrDnNam,FrDnPrise,0,1);
WindowRedraw();
return;} 
//-----------------------------------------------------------------------------+
// Ищет горизонтальную линию по имени перерисовывает если изменилась цена | 
//-----------------------------------------------------------------------------+
void LineAp(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise+Distanse*Point,MarketInfo(Symbol(),MODE_DIGITS));
if(ObjectFind(FrApNam)==0){
if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}}
FrApPrise=FrPrise; 
ObjectDelete(FrApNam); 
SetHLine(ClAp,FrApNam,FrApPrise,0,1);
WindowRedraw();
return;}
//-----------------------------------------------------------------------------+ 
//| Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" или NULL - текущий символ) |
//| tf - таймфрейм ( 0 - текущий ТФ) |
//| mode - тип фрактала (MODE_LOWER|MODE_UPPER) |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
if (sy=="" || sy=="0") sy=Symbol();
double f=0;
int d=MarketInfo(sy, MODE_DIGITS), s;
if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

for (s=2; s<100; s++) {
f=iFractals(sy, tf, mode, s);
if (f!=0) return(NormalizeDouble(f, d));
}
Print("FindNearFractal(): Фрактал не найден");
return(0);
}

//+----------------------------------------------------------------------------+
//| Описание : Установка объекта OBJ_HLINE горизонтальная линия |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| cl - цвет линии |
//| nm - наименование ("" - время открытия текущего бара) |
//| p1 - ценовой уровень (0 - Bid) |
//| st - стиль линии (0 - простая линия) |
//| wd - ширина линии (0 - по умолчанию) |
//+----------------------------------------------------------------------------+
void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (p1<=0) p1=Bid;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0);
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH , wd);
}



Надо к данному индикатору написать советник.Передающий верхнюю и нижнюю цены.по М1 и М5 таймфреймам. 

Não sabe para que serve o src? Apague seu rabisco!
 
Como implementar esta função em minha EA? Quando TP ou SL é acionado em qualquer ordem Bay, todas as ordens Bay devem ser fechadas.
 
David não é uma função, é um pequeno Expert Advisor, em poucas palavras é comparar quantos pedidos foram e quantos pedidos estão fechados na amostra, eu ajudarei em detalhes assim que eu lidar com a transferência de dados do indicador para o Expert Advisor, eu já dei os ToR acima
 
Nunca ouvi falar disso, simplesmente não o entendo. Na verdade descrevi o problema, mas consegui algum tipo de silêncio ((. https://forum.mql4.com/ru/52892/page308 palomnik 23.04.2013 09:56
 
palomnik:
Senhor, alguém entende como passar valores de um indicador para um EA? Preciso de ajuda, eu mesmo não a entendo, apenas um momento e depois acaba. https://forum.mql4.com/ru/52892/page308 palomnik 23.04.2013 09:56
Há muitas maneiras diferentes de se fazer isso:

1. Através de uma variável global.

2. Através de arquivo.

3. via iCustom().

4. Através das variáveis gráficas globais.

5. Mapeamento. Você pode transferir dados de um terminal para outro terminal. Ou em um terminal para transferir dados de uma janela para outra janela sem limitação de variáveis globais do MT4.

Razão: