#property strict#include <Indicators\Trend.mqh>
bool ind;
CiMA MA;
externint pos=1;
externint sl=40;
externint tp=70;
datetime time;
datetime time2;
bool trade=false;
bool trade2=false;
int a,b;
intOnInit()
{
//---
MA.Create(Symbol(),PERIOD_CURRENT,10,6,MODE_EMA,PRICE_CLOSE);//создал машку//---return(INIT_SUCCEEDED);
}
voidOnTick()
{
//---if(IsNewBar()==true)//если новый бар включаемся
{
if(buy(pos)==true)//если цена выше МА продолжаем
{
if(!ExistPositions(Symbol(),-1,-1,0))//если нету открых ордеров продолжаем
{
if(GetTypeLastClosePos(Symbol(),-1)!=OP_BUY)//если тип последней закрытой позиции был не на покупку то тогда только покупаем таким образом я пред остерегаюсь от повторных входов в покупку если цена //все ещо выше МА...но почему то не работает открываются и дальше сделки на покупку если ордер закрылся выше МА....ХОТЯ НЕ ДОЛЖО ТАК КАК Я ОГРАНИЧИЛ ПО ТИПУ ПОЗИЦИИ ПОСЛЕДНЮЮ СДЕЛКУ И ОНИ ДОЛЖНЫ ТОЛЬКО // ЧЕРЕДОВАТСЯ И УЖ НИ КАК НЕ ПОВТОРЯТСЯ ПО НЕСКОЛЬКО РАЗ ПОДРЯД
{
trade=true;
}
if(trade==true)
{
OpenPosition(Symbol(),OP_BUY,0.1,Ask-sl*Point,Ask+tp*Point);
trade=false;
}
}
}
if(sell(pos)==true)
{
if(!ExistPositions(Symbol(),-1,-1,0))
{
if(GetTypeLastClosePos(Symbol(),-1)!=OP_SELL)
{
trade2=true;
}
if(trade2==true)
{
OpenPosition(Symbol(),OP_SELL,0.1,Bid+sl*Point,Bid-tp*Point);
trade=false;
}
}}
}
}
//возвращает истину если закрытие бара с указаной позицией выше МАbool buy(int pos)
{
if(iClose(Symbol(),0,pos)>MA.Main(1))
returntrue;
elsereturnfalse;
}
//+------------------------------------------------------------------+//| возвращает истину если закрытие бара с указаной позицией ниже МА//+------------------------------------------------------------------+bool sell(int pos)
{
if(iClose(Symbol(),0,pos)<MA.Main(1))
returntrue;
elsereturnfalse;
}
你需要它,当然!那么,如何将这种结构应用于寻找最小值?我的大脑无法做到这一点)
为了找到最大值,变量val被赋予一个0的值(显然小于任何指标值)。
这意味着,为了找到最小值,我们必须故意增加一个更高的值。你可以使用EMPTY_VALUE 常数或直接在一些搜索最小值的条形上使用指标值。
或者像这样。
当然,你需要这样做!那么,你如何将这种结构应用于寻找最小值?我无法通过头脑风暴弄清楚)。
它的结果是-1。而且我想学习如何声明一个数组。我是这样试的。
循环经过34个值,而数组只包含33个单元,正确。
并尝试ArrayMinimum(num_array,WHOLE_ARRAY,0)。
...我还想学习如何声明一个数组...
如果只是为了训练和认知的目的,...
确定最小和最大的周期--它应该是一个外部参数,以便进行调整和优化。
所以,首先,声明的数组是没有大小的。
double val[];数组的声明是在一个公共部分完成的,而不是在一个函数中。
在init函数中,大小被设置为数组。
现在,在启动函数中,我们填充数组。
最后,ArrayMaximum() 和ArrayMinimum()被应用 于该数组。
为了找到最大值,变量val被赋予一个0的值(显然小于任何指标值)。
这意味着,为了找到最小值,我们必须故意增加一个更高的值。你可以使用EMPTY_VALUE常数或直接在一些搜索最小值的条形上使用指标值。
或者像这样。
循环经过34个值,而数组只包含33个单元格,修复它。
并尝试ArrayMinimum(num_array,WHOLE_ARRAY,0)。
亲爱的程序员朋友们!我有麻烦了,请帮助我。
我已经为这个代码绞尽脑汁了。
这里是整个函数。
读取打印,这是它的输出结果。
而票据:225299700是一张OP_SELLLIMIT订单票。
而且它如预期的那样修改了这个选定订单的止损。但是没有看到OP_BUY,尽管我确信它存在。
可能是什么问题?为什么它要这样对我?请帮助我理解!
关于函数的另一个问题
如何使一个矩形向前画而不是向后画,例如在指定的价格 上向前画5个柱子......,并且不重新画。
我查了一下。谢谢你。
虽然问题中没有太多的信息。在这个月的小时条上有很多极端的情况。顺便说一下,究竟是什么的极值?