Изменение открытого ордера. К данным изменениям относятся не только явные изменения со стороны клиентского терминала или торгового сервера, но также и изменение его состояния при выставлении (например, переход из состоянияORDER_STATE_STARTED到ORDER_STATE_PLACED 或者从ORDER_STATE_PLACED到ORDER_STATE_PARTIAL,等等)。
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
按照MT4的例子 "STRINGS: ASCII CHARACTERS TABLE AND USE"
//+------------------------------------------------------------------+//| StringLowerCase |//+------------------------------------------------------------------+string StringLowerCase(string str)
{
string s = str;
int lenght = StringLen(str) - 1, symbol;
while(lenght >= 0)
{
symbol = StringGetChar(s, lenght);
if((symbol > 64 && symbol < 91) || (symbol > 191 && symbol < 224))
s = StringSetChar(s, lenght, symbol + 32);// тут possible loss of data due to type conversionelseif(symbol > -65 && symbol < -32)
s = StringSetChar(s, lenght, symbol + 288);// тут possible loss of data due to type conversion
lenght--;
}
return(s);
}
//+------------------------------------------------------------------+//| StringUpperCase |//+------------------------------------------------------------------+string StringUpperCase(string str)
{
string s = str;
int lenght = StringLen(str) - 1, symbol;
while(lenght >= 0)
{
symbol = StringGetChar(s, lenght);
if((symbol > 96 && symbol < 123) || (symbol > 223 && symbol < 256))
s = StringSetChar(s, lenght, symbol - 32);// тут possible loss of data due to type conversionelseif(symbol > -33 && symbol < 0)
s = StringSetChar(s, lenght, symbol + 224);// тут possible loss of data due to type conversion
lenght--;
}
return(s);
}
bool BuySignal_new()
{
double Sig_Up[]; // динамический массив для хранения значений индикатора на покупку для каждого бараdouble Sig_Down[]; // динамический массив для хранения значений индикатора на продажу для каждого бараArraySetAsSeries (Sig_Up,true); // устанавливаем индексацию как в таймсерии ( т.е. 5,4,3,2,1,0) в динамич. массиве для индикатораArraySetAsSeries (Sig_Down,true); // устанавливаем индексацию как в таймсерии ( т.е. 5,4,3,2,1,0) в динамич. массиве для индикатораResetLastError();
double close = NormalizeDouble(iClose(_Symbol,_Period,1),Digits());
double close_1 = NormalizeDouble(iClose(_Symbol,_Period,0),Digits());
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),Digits());
if(CopyBuffer(Handle_stepma_line,0,1,5,Sig_Up)==5 && CopyBuffer(Handle_stepma_line,1,1,4,Sig_Down)==4 )
{
Print("Данные скопированы. Ошибок нет.");
}
else
{
Print("Ошибка копирования. Нет данных");
return(false);
}
if (Sig_Up[1] < Sig_Down[1] && Sig_Up[0] > Sig_Down[0])
{
Print("условие 1 - ок");
}
else
{
Print("условие 1 НЕ выполненно");
return(false);
}
if (close < Sig_Up[1]&& Bid > Sig_Up[0])
{
Print ("условие 2 - ок");
return(true);
}
else
{
Print("условие 2 НЕ выполненно");
return(false);
}
这要看抓取更新的目的是什么。直接过度填充阵列如何?
目的是什么有什么关系呢?问题是,既然有非常多的其他不太使用和需要的属性,为什么这么明显的事件却这么难抓。在这种情况下,目标是通知(警报)。
目标是什么有什么区别呢?问题是为什么这样一个明显的事件如此难以捕捉,即使有很多其他不太使用和需要的属性。在这种情况下,目标是通知(警报)。
所以是这个明显的事件在交易类型 中被强调。试试特里什金的图书馆里的58篇文章。也许它有一个简单的选项。
в 58 ми статьях
嗯,谢谢你))。
我怀疑他以同样的方式保存他的登记簿。
我只要知道这不是某张订单上的第一个ORDER_STATE_PLACED就够了。
事实证明,当第一个订单下达时,会有两个TRADE_TRANSACTION_ORDER_UPDATE。在这里,而第三个就已经适合我作为一个变化,在我的情况下,这只是一个价格变化。或者第二个ORDER_STATE_PLACED。
如果你不介意的话,请帮我解决这个问题...
我做了MT4 "STRINGS: ASCII CHARACTERS TABLE AND HIS USE "的例子 如果你不介意,请帮我解决这个问题...
StringSetChart() bool返回一个bool。而你要把它赋给一个字符串变量...如果这就是问题所在。
你好。我写了一个函数,检查进入一个位置的条件。
问题是,如果条件(以黄色标示)没有得到满足--函数并没有终止,而是进入了下一个条件。因此,信号不能正常工作。
应该怎样做才能使函数在其中一个条件不满足时停止工作--紧接着不正确的条件?
应该怎么做,以便如果其中一个函数条件没有得到满足--整个函数将在不正确的条件之后立即终止?
以其他方式删除分支,你可以这样试试。
移除其他的分支,你可以用这种方式试试。
谢谢,我会试一试的。