bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, otp;
int dg, i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) { // !!!!!!!!?????? ХОТЬ КТО-ТО МОЖЕТ ОБЪЯСНИТЬ ЗНАЧЕНИЕ СТРОК КОДА, КОТОРЫЕ НАЧИНАЮТСЯ С ЭТОГО МЕСТА?
dg=MarketInfo(sy, MODE_DIGITS);
if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
ocp=NormalizeDouble(OrderClosePrice(), dg);
otp=NormalizeDouble(OrderTakeProfit(), dg);
if (ocp==otp) return(True);
}
return(False);
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, otp;
int dg, i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
// !!!!!!!!?????? ХОТЬ КТО-ТО МОЖЕТ ОБЪЯСНИТЬ ЗНАЧЕНИЕ СТРОК КОДА, КОТОРЫЕ НАЧИНАЮТСЯ С ЭТОГО МЕСТА?if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {// Если очередной ордер истории торгов выбран, то
dg=MarketInfo(sy, MODE_DIGITS);// переменная dg принимет значение дигитса по валютной паре, имя которой лежит в переменной sy// далее я возможно не верно расставил приоритет скобок, но по сути должно быть так:if (dg==0){// если дигитс равен нулю, тоif(StringFind(OrderSymbol(),"JPY")<0){// если в имени инструмента ордера найдена подстрока то (только это не правильно написано - функция может верноуть значение > 1)
dg=4;// дигитс принимает значение = 4
}
else{// иначе
dg=2;// дигитс принимает значение = 2
}
}
ocp=NormalizeDouble(OrderClosePrice(), dg);// нормализация цены закрытия ордера
otp=NormalizeDouble(OrderTakeProfit(), dg);// нормализация цены ТейкПрофита ордераif (ocp==otp) return(True);
}
return(False);// команда вернуть из подпрограммы значение "ложь"
}
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
datetime t;
双重OCP,OTP。
int dg, i, j=-1, k=OrdersHistoryTotal()。
如果(sy=="0")sy=符号()。
for (i=0; i<k; i++) {
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
如果(OrderSymbol()==sy || sy=="){
如果(OrderType()==OP_BUY || OrderType()==OP_SELL) {
如果(op<0 || OrderType()==op){
如果(mn<0 || OrderMagicNumber()==mn) {
如果(t<OrderCloseTime()){
t=OrderCloseTime()。
j=i。
}
}
}
}
}
}
}
// !!!!!!!!??????谁能解释一下从这个地方开始的几行代码的含义?
如果(OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)){//如果选择了交易历史中的下一个订单
dg=MarketInfo(sy, MODE_DIGITS);//变量dg将接受货币对的数字值,其名称在变量sy中。
//此后可能我把括号放错了,但实际上应该是这样的
如果(dg==0){//如果数字为零,则
如果(StringFind(OrderSymbol(), "JPY")<0){//如果在订单符号名称中找到一个子串,那么(只是写得不对--函数可以验证>1)。
dg=4;//数字取值=4
}
其他{//其他
dg=2;//数字取值=2
}
}
ocp=NormalizeDouble(OrderClosePrice(), dg);//正常化订单收盘价
otp=NormalizeDouble(OrderTakeProfit(), dg);//将订单的获利价格正常化。
如果(ocp==otp)返回(True)。
}
return(False);//命令从子程序返回(false)。
}
谢谢你,什么是数字?
交易工具的数字 - 小数点后有多少个数字。
交易工具的意义 - 小数点后有多少个数字。
也就是说,如果我知道数字是4,那么代码可以像这样缩短?
int dg = 4;
............ 代码
如果(OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)){
ocp=NormalizeDouble(OrderClosePrice(), dg);//正常化订单收盘价otp=NormalizeDouble(OrderTakeProfit(), dg);//正常化订单获利价格
if (ocp=otp) return(True);
}
return(False)。
}
请告诉我是否有一个指标可以计算所有参与交易的货币对的未结订单总数?
向CodeBase的老板提问。我已经向那里发送了3份出版物(加上3份英文出版物)。其中一份是在7月18日发出的,还没有公布。一开始,当我把代码送到那里时,它们在3-4天内出现。现在还不清楚是否会有新的作品发表。我想知道,比如说,材料很薄弱,在主管看来,他们不应该把它们塞进CodeBase,我是否会收到任何信息,说它们不会出现,然后,比如说,它们会从应用程序中被删除?如果我知道它们不会被出版,我就会以不同的方式准备出版,更广泛地准备。是否有任何平均等待出版的时间?