[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 8

 
Mm-hmm, obrigado,
 

Olá.

Aqui estão meus trabalhos do fim de semana. Estou submetendo-o para condenação.

int start()
{
//
double CCI = NormalizeDouble(iCCI(NULL, 0,Period,PRICE_CLOSE,1), Digits);

if(CCI[1] > -100)
if(CheckOrders(OP_SELLL))
{
if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Imprimir("Pedido de compra não aberto. Erro #", GetLastError());
}

if(CCI[1] < 100)
if(CheckOrders(OP_BUY)
{
if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Imprimir("Pedido de venda não aberto. Erro #", GetLastError());
}

//
return(0);
}

Isto faz parte do código da CCI. A essência é simples, cci na parte inferior >-100 comprar, cci na parte superior <100 vender


int start()
{
//
double RSI = NormalizeDouble(iRSI(NULL, 0,Period,PRICE_CLOSE,1), Dígitos);

if(RSI[1] > 70)
if(CheckOrders(OP_SELLL))
{
if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Imprimir("Pedido de compra não aberto. Erro #", GetLastError());
}

if(RSI[1] < 30)
if(CheckOrders(OP_BUY)
{
if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Imprimir("Pedido de venda não aberto. Erro #", GetLastError());

//

return(0);
}

a parte do código para RSI é a mesma, comprar a 70 vende a 30


int start()
{
//


double WPR = NormalizeDouble(iWPR(NULL, 0,Period,1), Digits); if(WPR[1] > -80)
if(CheckOrders(OP_SELLL))
{
if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Imprimir("Pedido de compra não aberto. Erro #", GetLastError());
}

if(WPR[1] < -20)
if(CheckOrders(OP_BUY))
{
if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Imprimir("Pedido de venda não aberto. Erro #", GetLastError());
}

//
return(0);
}

esta parte do código para WPR (indicador williams) comprar -80, vender -20.

Tenho uma pergunta se não estou confundido com as condições comerciais em toda esta............Obrigado a você........

 

Olá, estimados profissionais e não só.

Na minha opinião, seu website é o mais adequado para ajudar os iniciantes no aprendizado da MQL4.

Quando fiz perguntas, recebi respostas abrangentes de especialistas. Precisamente os especialistas. Mas um principiante é um principiante. Ele fará a pergunta uma e outra vez até compreender sua essência. Portanto, comporte-se com os alunos que têm o desejo de aprender algo..... Talvez eles (alunos) não sejam tão espertos como os nerds, e não tão espertos como os nerds, mas se houver um desejo, acho que deve ser bem-vindo...... Eu quero aprender.....

Gostei muito das respostas e comentários de korey, grani77, vinin, YuraZ, figarO, BARS. Inteligente e inteligente. Se você me permite, a comunicação pode ser transferida para o endereço de e-mail ............ Agradeço antecipadamente

 
igrok2008 писал(а) >> e não tão inteligente quanto os nerds.

Caramba! Eu pensei: "Não importa o quanto você ensine uma galinha, ela não fica mais esperta, ela apenas sabe mais".

 
Mathemat >> :

Caramba! Eu pensei: "Não importa o quanto você ensine uma galinha, ela não fica mais esperta, apenas aprende mais".

Por que ensinar uma galinha? Não é sequer uma ave (segundo o provérbio) ..... Mas um ser humano é diferente de uma galinha porque pensa. Ou poderíamos dizer: "Você vive muito tempo e aprende muito tempo".

E ainda repito, acima dei minha criação durante o fim de semana, por favor, seus comentários o que está errado ..........

 

para igrok2008

Eu diria que o estado atual do comércio automatizado se parece com a Batalha da Colheita,
Estamos brigando com as combinações, citações, MQL, testador, TS com falhas de livros e de livros caseiros,
é por isso que o treinamento simplesmente não está resolvido, ele ainda não existe por causa dos muitos problemas não resolvidos
desde o técnico até o gnóstico.
- Existe a arte de criar a MTS, mas o resto da meta-comércio é uma bagunça.
portanto, só há uma maneira de o treinamento funcionar
=Você tem que escolher o problema certo, trabalhar nele e aprender com ele.
...
P.S. é uma pena estudar, porque ao invés de (ter experiência e habilidades) resolver problemas no MT4, você tem que aprender e aprender com esses problemas.
IMHO = face no piano
mas ainda não há outras formas de auto-comercialização e ainda não haverá

 
Korey >> :

para igrok2008

o estado atual do comércio de automóveis é como a Batalha da Colheita,
estamos lutando com a combinação, citações, MQL, testador, TS com falhas de livros e de livros caseiros,
é por isso que o treinamento simplesmente não está resolvido, ele ainda não existe por causa dos muitos problemas não resolvidos
desde o técnico até o gnóstico.
- Existe a arte de criar a MTS, mas o resto da meta-comércio é uma bagunça.
para que o treinamento só possa ser sustentado de uma maneira
=Você tem que escolher o problema certo, trabalhar nele e aprender com ele.
...
P.S. é uma pena estudar, porque ao invés de (ter experiência e habilidades) resolver problemas no MT4, você tem que aprender e aprender com esses problemas.
IMHO = face no piano
mas ainda não há outras formas de auto-comercialização e nunca haverá.

Por que dói aprender? Uma pessoa aprende e se desenvolve. Se ele não aprender, é um processo de transformação em uma ameba, em um estado unicelular, amorfo. Portanto, estas são questões filosóficas. São complicadas, não são simples, e é MELHOR discuti-las em uma xícara de chá (40 graus), com pastelaria (um pedaço de carne boa) e em um sofá mágico. ......-:)))))))

Repito, a partir de 16.02 (acima) minhas criações. O que há de errado com eles.............

 

para igrok2008

1. Nenhuma pergunta, ou seja, onde a pergunta é feita?
2. para responder à pergunta geral "o que há de errado com eles", você precisa executar esta EA, é uma técnica, mas não é adequada para testes.
Mas se for, não há nada a responder.
3. Você não precisa dirigir o Consultor Especialista se quiser saber sobre a CCI, por exemplo, a pergunta, o que mais é + para a CCI, mas você não perguntou isso))
3. o código afixado no botão SRC é muito mais fácil de ler, poupa seus olhos e tempo

 

Perguntas sobre o indicador:

1. Meu comentário ao código está correto (vermelho)

2. Onde no código está escrito para mudar a cor do histograma quando haOpen < haClose e quando haOpen > haClose

Se você não se importa, por favor, corrija os comentários errados sobre este código! Eu realmente quero entender isso):

//+------------------------------------------------------------------+
//| Heiken Ashi.mq4 |
//| Copyright c 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//| For Heiken Ashi we recommend next chart settings ( press F8 or |
//| select on menu 'Charts'->'Properties...'): |
//| - On 'Color' Tab select 'Black' for 'Line Graph' |
//| - On 'Common' Tab disable 'Chart on Foreground' checkbox and |
//| select 'Line Chart' radiobutton |
//+------------------------------------------------------------------+

// Все, что было написано выше - стандартная лабуда
// а все, что идет ниже под грифом #property - это объявление глобальных констант.

#property copyright "Copyright © 2004, MetaQuotes Software Corp." // это могли бы и не писать
#property link "http://www.metaquotes.net" // это тоже лабудаа

#property indicator_chart_window // отображать индикатор в основном окне
#property indicator_buffers 4 // будет 4 буфера
#property indicator_color1 Red // цвет для гистограммы
#property indicator_color2 White // цвет для гистограммы
#property indicator_color3 Red // цвет для гистограммы
#property indicator_color4 White // цвет для гистограммы
#property indicator_width1 1 // толщина для гистограмм
#property indicator_width2 1
#property indicator_width3 3
#property indicator_width4 3

//---- четыре строчки ниже - это внешние переменные цветов гистограмм
extern color color1 = Red;
extern color color2 = White;
extern color color3 = Red;
extern color color4 = White;
//---- buffers вводятся переменные, которые в дальнейшем будут связаны с буферами гистограмм индикатора
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//----
int ExtCountedBars=0; // вводится переменная, которой присваивается 0 - хаха , я не знаю почему не 1((
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//|------------------------------------------------------------------|
int init() // а здесь запускается специальная функция init (здесь она запускается после присоединения индикатора к окну графика, после изменения настроек эксперта)
{
//---- indicators
SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1); // здесь устанавливается тип гистограмм с порядковыми номерами линий, типом, стилем, шириной, цветом
SetIndexBuffer(0, ExtMapBuffer1); // связывает переменную-массив, объявленную на глобальном уровне с предопределенным (по порядковому номеру линии = 0)
// буфером польз.-го индикатора
. Ниже по аналогии.
SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2);
SetIndexBuffer(1, ExtMapBuffer2);
SetIndexStyle(2,DRAW_HISTOGRAM, 0, 3, color3);
SetIndexBuffer(2, ExtMapBuffer3);
SetIndexStyle(3,DRAW_HISTOGRAM, 0, 3, color4);
SetIndexBuffer(3, ExtMapBuffer4);
//---- // установка порядкового номера бара от начала данных для отрисовки указанной линии
SetIndexDrawBegin(0,10); // порядковый номер линии = 0. хаха не понятно, эта линия будет рисоваться на основании 11 быров с учетом нулевого?(( индикатор отрисован
// по гораздо большему количеству баров((. ниже по аналогии
SetIndexDrawBegin(1,10);
SetIndexDrawBegin(2,10);
SetIndexDrawBegin(3,10);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer1); // а зачем повторять ведь это же уже было написано выше, наверное автор этого индикатора захотел меня запутать!))
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexBuffer(3,ExtMapBuffer4);
//---- initialization done
return(0); // на этом специальная функция init завершается. Только почему в скобках у return ноль?? - непонятно((
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit() // а тут специальная функция deinit, которая не используется
{
//---- TODO: add your code here

//----
return(0); // гуд бай deinit
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() //это основная функция индикатора запускается на каждом новом тике
{
double haOpen, haHigh, haLow, haClose; //вводятся локальные дробные переменные
if(Bars<=10) return(0); //оператор if с условием если баров yна рафике меньше или равно10 - закрывать функцию start
ExtCountedBars=IndicatorCounted(); //переменной ExtCountedBars присваивается значение количества баров в окне терминала.
//а чем отличается
функция IndicatorCounted () от Bars?
//---- check for possible errors
if (ExtCountedBars<0) return(-1); //ну вот, еще один if - если переменная ExtCountedBars < нуля ?завершение функции start? почему return с (-1)? - Непонятно((
//---- last counted bar will be recounted
if (ExtCountedBars>0) ExtCountedBars--; // а если ExtCountedBars больше нуля, от этого количества баров отнимается единица.
//Осуществляется переход на один бар ближе к нулевому - если я правильно понимаю
int pos=Bars-ExtCountedBars-1; //Вводиться и рассчитывается переменная pos - указатель на бар, с которого будет вестись расчет
while(pos>=0) //Запуск цикла while с условием, что pos должна быть больше или равна нулю. Цикл будет повторяться при каждом новом тике
//(при соблюдении условия).
{
haOpen=(ExtMapBuffer3[pos+1]+ExtMapBuffer4[pos+1])/2; //вводится и рассчитывается переменная haOpen на основании(суммы 2-х буферов 3-го и 4-го со смещением на один
//бар вперед)потом это на 2 делится
//когда цикл while снова повториться к pos будет изменена, чтобы не считать уже вычесленное значение индикаторов?

haClose=(Open[pos]+High[pos]+Low[pos]+Close[pos])/4; //вводится и рассчитывается переменная haClose на основании суммы цен открытия, максимума, минимума и закрытия
//бара начала рассчета
haHigh=MathMax(High[pos], MathMax(haOpen, haClose)); //вводиться и рассчитывается переменная haHigh на основании функции возврата максимального из двух числовых
//максимума текущего бара pos и максимального из 2-х числовых значений (haOpen и haClose)
haLow=MathMin(Low[pos], MathMin(haOpen, haClose)); //значений, то же что и строкой выше - только рассчитывается минимальное значение
if (haOpen<haClose) //если haOpen меньше haClose
{
ExtMapBuffer1[pos]=haLow; //тогда значение Буфер 1 по pos равено haLow
ExtMapBuffer2[pos]=haHigh; //и значение буфера 2 по pos равно haHight
}
else //а если условие ложно и haOpen больше или равно haClose
{
ExtMapBuffer1[pos]=haHigh; //тогда наоборот значение Буфер 1 по pos равно haHigh t
ExtMapBuffer2[pos]=haLow; //а значение Буфера 2 по pos равно haLow
}
ExtMapBuffer3[pos]=haOpen; //в любом случае значение Буфера3 по pos равно haOpen
ExtMapBuffer4[pos]=haClose; //а значение буфера 4 по pos равно haClose
pos--; //уменьшаем pos на единицу (ближе к нулевому бару) и повторяем цикл while сначала при соблюдении его условия
}
//----
return(0); //а если условие не соблюлось, выход из цикла while и конец функции start
}
//+------------------------------------------------------------------+
similar |
Arquivos anexados:
 
Os exemplos acima descrevem o código de compra e venda para CCI, RSI e WPR. Por que exatamente estes indicadores são utilizados? Na minha opinião, eles são os mais fáceis de aprender como construir um Expert Advisor. O princípio de compra e venda é o mesmo para eles. menos de -100 (para CCI), -70 (para RSI) e 20 (para WPR), respectivamente, a venda será: +100, -30 e 80. Parece-me (cruzado mais de uma vez) que os erros estão nas condições comerciais, mas onde eu não entendo..... Trata-se do princípio de ESCREVER corretamente as condições comerciais (acho que sim).............. Isso é o que eu queria lhe perguntar........