int ПодсчетОткрОрдеров() { int k=OrdersTotal(); if (Символ=="0") Символ=Symbol(); for (int i=МаксКолОрдеров; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Символ || Символ=="") { if (МагикНомер<0 || OrderMagicNumber()==МагикНомер) { if (OrderMagicNumber()<1) return(True); } } } } return;
}
//+------------------------------------------------------------------+ int start() { if(ПодсчетОткрОрдеров()==0)ПровТоргУсловий(); }
bool Fact_1 = false; // Глобальная перемен для бай. bool Fact_2 = false; // Глобальная перемен для бай bool Fact_3 = false; // Глобальная перемен для бай
double support; double resist;
int timeFrame = 5; int numBars = 15; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //----
//---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //----
ObjectsDeleteAll(); //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //----
//--------------------------------------------------------------------------- if (Fact_3==true) //Если событие уже..
//..было, то выходим return(0);
//----
//---- БЛОК ОТКРЫТИЯ BUY--------------------------------------------------------------
if (iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0)&& iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,1)>=iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0))//если МА50 пересекает МА200 снизу вверх по M5 Fact_1 = true; // Произошло событие 1 //- if (Fact_1 == true && Low[0]<= iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,0))//если цена опустилась до МА50 Fact_2 = true; // Произошло событие 2 if (Fact_2 == true)
{ // Определяем линии поддержки\сопротивления support = 10000; resist = 0;
for(int u = 1;u<=numBars;u++) { if(support>iLow(Symbol(),timeFrame,u)) support = iLow(Symbol(),timeFrame,u); if(resist<iHigh(Symbol(),timeFrame,u)) resist = iHigh(Symbol(),timeFrame,u); } ObjectSet("lineSupport",OBJPROP_PRICE1,support); ObjectSet("lineResist",OBJPROP_PRICE1,resist);
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(n>1)
if(ind!=0) n--;
else
if(ind!=0) return(ind);
}
}
如果你需要峰值的条数,请将函数类型改为int,并将return(ind)改为return(i)。
这是我目前正在思考的问题。所有double和 int 类型的函数总是返回具体的固定值。例如,1,0,-1,在这种情况下,必须用这个函数以不同于我以前的方式处理条件,例如
在这种情况下,我们必须进行比较,比如说,对3个部落进行比较。
这是符合逻辑的写法吗?也许给这个函数设置bool 类型更合理?比如:如果我们找到了第三个膝盖,那么在这个价格(低于或高于ind)我们买入或卖出。
而在这种情况下,我们将带有n个膝 关节参数的函数与这个膝关节的价格进行比较,然后呢?
我此刻正在考虑这个问题。我所有的double和 int 类型的函数总是返回特定的固定值。例如,1,0,-1,但在这种情况下,应该用这个函数执行的条件与我之前的方式不同,比如。
在这种情况下,我们必须进行比较,比如说,对3个部落进行比较。
这是符合逻辑的写法吗?也许给这个函数设置bool 类型更合理?比如:如果我们找到了第三个膝盖,我们就以一个价格(比ind 低或高)买入或卖出。
在这种情况下,我们将具有参数n膝 的函数与该膝的价格进行比较,然后呢?
Double ind可以返回-2,-3等,甚至Pi 3.14159......。
而在这种情况下,我们是将带有n个膝 关节参数的函数与这个膝关节的价格进行比较,然后呢?这不是很清楚....
我此刻正在考虑这个问题。我所有的double和 int 类型的函数总是返回特定的固定值。例如,1,0,-1,但在这种情况下,应该用这个函数执行的条件与我之前的方式不同,比如。
在这种情况下,我们必须进行比较,比如说,对3个部落进行比较。
这是符合逻辑的写法吗?也许给这个函数设置bool 类型更合理?比如:如果我们找到了第三个膝盖,那么在这个价格(低于或高于ind)我们买入或卖出。
而在这种情况下,我们将带有n个阈值 参数的函数与这个膝盖处的价格进行比较,然后呢?
好吧,不,尝试实验......,这都是废话......。
Double ind可以返回-2,-3等,甚至Pi 3.14159......。
而在这种情况下,我们将带有n个膝 关节参数的函数与这个膝关节的价格进行比较,然后呢?
我们为什么要突然这样做呢?Double ind 将返回一个小数......而-2,-3......是整数。而根据我的理解,Double ind 是get_extrem(int n)参数中膝盖上的价格。
这个网站不是用来交易的...它主要致力于MQL编程。如果你注意到许多代码,他们甚至警告 "不用于真实交易"。
如果管理员发现这样的情况,我想他们就不会再去维护这个网站了......)
就像墙上的豌豆)。
我们需要的是,在任何随机选择的时间段内,有一个适当购买的例子。
是的,他们写的不是真正的贸易...那么,是什么,为什么?
为什么不展示一个真实交易的例子,而不公布策略。
或者说,在原则上没有合适的例子。
下午好。你能告诉我如何从相应的指标中获得Heiken Ashi(HA)Hi-Lo(振幅)参数吗?我试着处理全局变量,但我遇到了困难。在HA代码中,我以如下方式嵌入了得到
int start()
{
双重haOpen, haHigh, haLow, haClose
...
GlobalVariableGet(pip)。
......(这是带有HA计算的标准代码)。
接下来我们得到Hi-Lo烛台的参数HA
result2=MathMin(ExtMapBuffer3[pos+1],ExtMapBuffer4[pos+1])
result22=MathMax(ExtMapBuffer3[pos+1],ExtMapBuffer4[pos+1])。
result3=MathMin(Low[pos+1],result2)。
result33=MathMax(High[pos+1],result22)。
result0=result33-result3; /计算HA的振幅
GlobalVariableSet(pip,result0);/ 将振幅值 分配给 globalVariableSet (pip,result0)。
pos--。
}
//----
return(0);
}
然后我就把GlobalVariableGet(pip) 插入到EA的公式中,但有些地方完全不对,即pip的值不是它应该 有的。请告诉我什么是错的。或者说,对于EA的操作来说,更容易得到HA的振幅。
同一个账户上的多个EA,有必要开设有限的订单。
例如:10个EA,但只能开5个订单,但每个货币对不能超过一个。
这是按以下方式实现的,但它并不是这样工作的。
extern int МаксКолОрдеров = 5;
//+------------------------------------------------------------------+
int ПодсчетОткрОрдеров() {
int k=OrdersTotal();
if (Символ=="0") Символ=Symbol();
for (int i=МаксКолОрдеров; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Символ || Символ=="") {
if (МагикНомер<0 || OrderMagicNumber()==МагикНомер) {
if (OrderMagicNumber()<1) return(True);
}
}
}
}
return;
}
//+------------------------------------------------------------------+
int start()
{
if(ПодсчетОткрОрдеров()==0)ПровТоргУсловий();
}
1.上面提示了我关于全局变量的问题,谢谢。我正在看文档,在你们的版本中,是如何做到的?
2.我希望专家顾问在达到盈利后不再进入市场,直到手动确认交易授权。
1.监测每条杠的利润水平。如果超过规定的存款比例,所有的交易就会结束。
2.查看和编辑这个专家顾问,在magik上添加过滤器和你需要的一切...
帮助我完成代码。我试着写了一个代码,说
-如果MA50从下到上穿过MA200,然后
-如果价格下降到МА50
-在图表上画出两条线,即支撑线和阻力线(为过去15个柱子所画)。
这就像一切都在工作,但我不能确保这些线第一次出现,然后保持在原地,它需要交易算法(和它们继续被绘制)。
我可以将它们与时间或酒吧绑定吗?
以下是代码。我需要添加什么?
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
bool Fact_1 = false; // Глобальная перемен для бай.
bool Fact_2 = false; // Глобальная перемен для бай
bool Fact_3 = false; // Глобальная перемен для бай
double support;
double resist;
int timeFrame = 5;
int numBars = 15;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectsDeleteAll();
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//---------------------------------------------------------------------------
if (Fact_3==true) //Если событие уже..
//..было, то выходим
return(0);
//----
//---- БЛОК ОТКРЫТИЯ BUY--------------------------------------------------------------
if (iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0)&&
iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,1)>=iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0))//если МА50 пересекает МА200 снизу вверх по M5
Fact_1 = true; // Произошло событие 1
//-
if (Fact_1 == true && Low[0]<= iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,0))//если цена опустилась до МА50
Fact_2 = true; // Произошло событие 2
if (Fact_2 == true)
{
// Определяем линии поддержки\сопротивления
support = 10000;
resist = 0;
for(int u = 1;u<=numBars;u++)
{
if(support>iLow(Symbol(),timeFrame,u))
support = iLow(Symbol(),timeFrame,u);
if(resist<iHigh(Symbol(),timeFrame,u))
resist = iHigh(Symbol(),timeFrame,u);
}
ObjectSet("lineSupport",OBJPROP_PRICE1,support);
ObjectSet("lineResist",OBJPROP_PRICE1,resist);
}
//----
{
ObjectCreate("lineSupport",OBJ_HLINE,0,0,0);
ObjectSet("lineSupport",OBJPROP_COLOR,Blue);
ObjectCreate("lineResist",OBJ_HLINE,0,0,0);
ObjectSet("lineResist",OBJPROP_COLOR,Red);
}
//----
//что сюда добавить что бы линии появившись, оставались на месте?
//----
return(0);
}
会发生什么,会发生什么,如果
买入,卖出,不指定滑点的保证金。通常是+-2点的投入。
响应是一个重新报价。
而如果没有设置滑点值,是否就能保证买入?