[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 8

 
嗯,谢谢你。
 

你好。

这是我周末的劳动成果。我把它提交给谴责。

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

if(CCI[1] > -100)
if(CheckOrders(OP_SELL) )
{
if(!OrderSend(Symbol(, OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Print("买入订单未打开。错误#", GetLastError();
}

if(CCI[1] < 100)
if(CheckOrders(OP_BUY)
{
if(!OrderSend(Symbol(, OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Print("卖出订单没有打开。Error #", GetLastError());
}

//----
return(0);
}

这是CCI代码的一部分。其本质很简单,底部的cci值>100时买入,顶部的cci值<100时卖出


int start()
{
//----
double RSI = NormalizeDouble(iRSI(NULL, 0,Period,PRICE_CLOSE,1), Digits);

if(RSI[1] > 70)
if(CheckOrders(OP_SELL) )
{
if(!OrderSend(Symbol(, OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Print("买入订单未打开。错误#", GetLastError();
}

if(RSI[1] < 30)
if(CheckOrders(OP_BUY)
{
if(!OrderSend(Symbol(, OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Print("卖出订单没有打开。Error #", GetLastError());

//----
return(0);
}

RSI的代码部分是相同的,在70买入,在30卖出。


int start()
{
//----
double WPR = NormalizeDouble(iWPR(NULL, 0,Period,1), Digits);

if(WPR[1] > -80)
if(CheckOrders(OP_SELL) )
{
if(!OrderSend(Symbol(, OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Print("买入订单未打开。错误#", GetLastError();
}

if(WPR[1] < -20)
if(CheckOrders(OP_BUY))
{
if(!OrderSend(Symbol(, OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
Print("卖出订单没有打开。Error #", GetLastError());
}

//----
return(0);
}

这一部分代码为WPR(威廉斯指标)买入-80,卖出-20。

我有一个问题,如果我对所有这些的交易条件不感到困惑,............,非常感谢你........。

 

你好,尊敬的专业人士,不仅如此。

在我看来,您的网站是最适合帮助新手学习MQL4的。

当我提出问题时,我得到了专家的全面解答。正是这些专家。但初学者就是初学者。他将一次又一次地问这个问题,直到他理解了问题的本质。因此,有求知欲的学子们要好好表现.....,也许他们(学生)没有极客那么聪明,也没有书呆子那么聪明,但如果有求知欲,我认为应该欢迎......,我想学习.....。

我非常喜欢korey, grani77, vinin, YuraZ, figarO, BARS的回答和评论。聪明和智慧。如果你允许的话,可以将通信转到电子邮件地址...........,我在此表示感谢。

 
igrok2008 писал(а)>>,不像书呆子那样聪明。

哦,孩子。我想,"无论你怎么教鸡,它都不会变得更聪明,它只是知道更多"。

 
Mathemat >> :

哦,孩子。我想,"无论你怎么教鸡,它都不会变得更聪明,它只是学得更多"。

为什么要教一只鸡?它甚至不是一只鸟(根据谚语).....,但人与鸡不同,因为他有思想。或者我们可以说,"你活了很久,学了很久"。

我仍然重复,上面我给出了我在周末的创作,请大家评论一下,有什么问题..........。

 

致IGROK2008

我想说的是,自动交易的现状看起来像丰收之战。
我们正在与联合体、报价、MQL、测试器、书中的故障TS和自制的TS进行斗争。
这就是为什么培训根本没有解决,它还不存在,因为有很多问题没有解决。
从技术性的到可知论的都有。
- 有创造MTS的艺术,但其余的元交易是一团糟。
因此,只有一种方法可以维持训练
=你必须选择正确的问题,在它上面工作并从中学习。
...
P.S. 学习是件很丢脸的事,因为你不是(有经验和技能)解决MT4的问题,而是要学习和借鉴这些问题。
IMHO=钢琴上的脸
但在自动交易中还没有其他方法,将来也不会有。

 
Korey >> :

致IGROK2008

汽车贸易的现状就像丰收之战。
我们正在与联合体、报价、MQL、测试器、书中的故障TS和自制的TS进行斗争。
这就是为什么培训只是没有解决,它还不存在,因为有许多未解决的问题
从技术层面到可知论层面。
- 有创造MTS的艺术,但其余的元交易是一团糟。
因此,只有一种方法可以维持训练
=你必须选择正确的问题,在它上面工作并从中学习。
...
P.S. 学习是件很丢脸的事,因为你不是(有经验和技能)解决MT4的问题,而是要学习和借鉴这些问题。
IMHO=钢琴上的脸
但在自动交易中还没有其他方法,而且永远不会有。

为什么学习会受到伤害?一个人的学习和发展。如果他不学习,那就是一个转变为阿米巴的过程,转变为单细胞、无定形的状态。因此,这些都是哲学上的问题。它们是复杂的,而不是简单的,最好是在一杯茶(40度),带着糕点(一块好肉),在一个魔术沙发上讨论它们。......-:)))))))

我重复,从16.02(以上)我的创作。他们有什么问题.............

 

致IGROK2008

1.没有提出问题,即在哪里提出的问题?
2.要回答 "他们有什么问题 "的一般问题,你根本需要运行这个EA,它是一种技术,但它不适合测试。
但如果是这样,就没有什么可回答的。
3.你不需要测试,如果问题是关于CCI的,例如,关于其他东西+CCI的问题是合适的,但你还没有问))
3.张贴在SRC按钮上的代码更容易阅读,节省你的眼睛和时间

 

关于该指标的问题。

1.我对代码的评论是正确的(红色)。

2.当haOpen < haClose和haOpen > haClose时,代码中哪里写了改变柱状图的颜色?

如果你不介意的话,请纠正这段代码上的错误注释!我真的想了解它)。

//+------------------------------------------------------------------+
//| 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
}
//+------------------------------------------------------------------+
类似的 |
附加的文件:
 
上述例子描述了CCI、RSI和WPR的买入和卖出代码。究竟为什么要使用这些指标?在我看来,他们是最容易学习如何建立一个专家顾问的。买入和卖出原则对他们来说是一样的。小于-100(对于CCI),-70(对于RSI)和20(对于WPR),分别卖出将是:+100,-30和80。在我看来(不止一次穿越),错误在交易条件中,但我不明白的地方.....。这是关于正确书写交易条件的原则(我认为是)..............。这就是我想问你的问题........
原因: