KimIVの便利な機能 - ページ 120

 

こんにちは。

GetProfitOpenPosInCurrency()関数を改造して、最も負けているポジションを返すようにしました。 このポジション(OrderOpenTime())の開始時間を返すには、どの関数が適しているか教えていただけますか?

double GetMaxLoseOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) 
            if(p > OrderProfit() + OrderSwap() + OrderCommission()){
            p=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}
 
abeiks:

こんにちは。

GetProfitOpenPosInCurrency()関数を改造して、最悪の負けポジションを返すようにしました。 このポジション(OrderOpenTime())の開始時間を返すには、どの関数が適しているか教えていただけますか?


チケット番号を返すと、標準関数でできること
 
Vinin:

チケット番号を返すと、標準機能から解放される

ありがとうございます。
 

KimIV さん、こんにちは。スクリプトを探しているのですが、見つかりません。シンボルで保留中の注文をすべて 削除して、シンボルを 探し回る のですが、たぶんあります。

 

こんにちは。

KimIVのisTradeTimeInt()関数を使用しています。私は多くの時間間隔を使い、それぞれの間隔に異なる変数を割り当てることにします。そのためにこんなコードを作りました(今のところ2区間)。問題は、これが最も正しい解決策なのか、それとも別の方法でアプローチすべきなのか、ということです。

extern int OH1=9;extern int OM1=0;extern int CH1=12;extern int CM1=0;
extern int OH2=13;extern int OM2=0;extern int CH2=15;extern int CM2=0;

int HourOpenTime()
{
int trade = 0;
if(isTradeTimeInt(OH1,OM1,CH1,CM1))trade = 1;
if(isTradeTimeInt(OH2,OM2,CH2,CM2))trade = 2;
return (trade);
}
 
bestseich:

親愛なる イゴールキム、私は OrderCloseBy( )のような関数を書く のに役立ちますが、それは別のペアで動作する必要があり 、OrderProfit()、それは注文が異なって指示されているかどうかは関係ありません、1OrderProfit()>別の ように、別のペア、何ポイント、両方、正確に、唯一のこれらの2つが同時に閉じて いる。私のバリエーションはこんな感じです。

for (int i=OrdersTotal()-1;i>=0;i--)

{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()!=Symbol()||OrderSymbol()==Symbol()))です。
{
if(OrderProfit()>=pr*Point)//pr はパラメータで、ポイントは利益。
int ot=OrderTicket()、double op=OrderProfit()。
if(OrderProfit()<=pru*(-1)*Point)//pru それはパラメータにある、損失のポイント
int otu=OrderTicket()、double opu=OrderProfit()。
if(op>opu*v*(-1)&&(OrderType()==OP_BUY||OrderType()==OP_SELL))
//v は損益率、すなわち 1.5 です。
OrderClose(otu,OrderLots(),Bid,sleep,Blue)。
OrderClose(ot,OrderLots(),Bid,sleep,Blue)。
OrderClose(otu,OrderLots(),Ask,sleep,Blue)。
OrderClose(ot,OrderLots(),Ask,sleep,Blue)。

}}}

うまくいくのか?差し支えなければ、あなた自身の解決策を修正または提案してください。

 

イゴールへ

最後の注文を閉じた後、次の注文を開く前に、口座残高に応じて ロット数を計算する機能があるかどうか、教えてください。

あらかじめご了承ください。

 
vasabu2012:

イゴールへ

最後の注文を閉じた後、次の注文を開く前に、口座残高に応じてロット数を計算する機能があるかどうか、教えてください。

あらかじめご了承ください。

ここで、イゴールの機能を紹介します。

ファイル:
b-lots.mqh  3 kb
 

アップデートでPriceOpenLastPos関数が条件で動作しなくなり、私の脳みそが壊れそうになりました。

double PriceOpenLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0, r2=0;
int i, k=OrdersTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}

r2 = DoubleToStr(r, 4);

return(r2);
}


 
EAの再コンパイルにご協力ください e-CloseByEquity.rar MetaEditorのプログラミング変更に伴い