int Total_BUY=0, Total_SELL=0; // новые переменные как счетчики ордеров//---Раздельный учёт открытых ордеровfor(int i=OrdersTotal()-1; i>=0; i--) // Цикл перебора ордеров
{
// OrderSelect() надо выбирать с помощью ifif(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)); // Если найден ордер, то:
{
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
else
{
if(OrderType()==OP_BUY) Total_BUY++; // считает открытые позиции на покупкуif(OrderType()==OP_SELL) Total_SELL++; // считает открытые позиции на продажу
}
}
}
1_How to find High[i - end of day], I have a simple loop Close[i]-Open[i+1], I need to find High[i - end of day].例えば、from[i],[1],[2] and to the end of day (PERIOD_H1) .どうすればいいのかわからない。iHigh」機能もありますが、ちょっと違いますね。
そして、あなたのお母さんは、ドキュメントを読むことを許さないのですか?例)SendMail
はいこの関数はもちろん、私が知っている、つまり - ターミナルのウィンドウでタブ、(貿易、資産、アカウントの履歴、ニュース、アラート、メールなど)メールが到着したときにそこに(内部のメール端末で)SMSや電子メールを送った(例えば、サーバーなどを再起動についてのメッセージを受信する)?
はいこの関数はもちろん、私は知っている、つまり - ターミナルのウィンドウでタブ、(貿易、資産、アカウントの履歴、ニュース、アラート、メールなど)メールがそこに来るとき(内部のメール端末で)SMSや電子メールを送った(例えば、サーバーなどを再起動に関するメッセージを受信する)?
だから、考えながらフレーズにしてください。
もし、あなたが明確に考えているならば、あなたは明確に考えている...。
こんにちは。私の間違いというか、私のプログラムのこのブロックのどこが欠陥なのかが理解できないのです。
//--未決済注文の別会計化
for(int i=OrdersTotal()-1;i>=0;i--)//OrdersTotal()-1;i>=0;i-- //注文のループ
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);// オーダーが見つかった場合
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}.
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic))
。if(OrderType()==OP_BUY)
Total++;
}
return;
}
//--。
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}.
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic))
。if(OrderType()==OP_SELL)
Total++;
}
return;
}
//---。
EAはStrategy Testerとデモ口座で安定して動作しますが、コンパイル時に2つの警告が発生します: 'OrderSelect' の戻り値を確認する必要があります。もし可能であれば、私の書いたものが間違っていたり、不完全だったりするところを教えてください。
こんにちは。私の間違いというか、私のプログラムのこのブロックのどこが欠陥なのかが理解できないのです。
//--未決済注文の別会計化
for(int i=OrdersTotal()-1;i>=0;i--)//OrdersTotal()-1;i>=0;i-- //注文のループ
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);// オーダーが見つかった場合
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}.
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic))
。if(OrderType()==OP_BUY)
Total++;
}
return;
}
//--。
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
{
if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic) continue;
}.
{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic))
。if(OrderType()==OP_SELL)
Total++;
}
return;
}
//---。
EAはStrategy Testerとデモ口座で安定して動作しますが、コンパイル時に警告が表示されます: 'OrderSelect' の戻り値を確認する必要があります。もし可能であれば、私の書いたものが間違っていたり、不完全だったりするところを教えてください。
こんにちは。私のプログラムでは、このブロックの何が間違いなのか、むしろ欠陥なのかが理解できないのです。
...1)コードを ここに正しく貼り付けるには、SRCをクリックしてから、ボックス内にコードをコピーしてください(下図)。
2)このコードを試してみてください。
アラートを取得するには
Alert(OrderOpenPrice());注文の開始 価格を小数点以下5桁で表示しますか?NormalizeDouble(OrderOpenPrice(),Digits) は役に立ちません。(注文は事前に選択されています).
アラートを取得するには
注文の開始価格を小数点以下5桁で表示しますか?NormalizeDouble(OrderOpenPrice(),Digits) は役に立ちません。(注文は事前に選択されています).
こんにちは。
2つのセグメントの交点の座標を求めるアルゴリズムの翻訳を手伝ってください。
記事より
とてもシンプルですね。
x1,y1 と x2,y2 は、最初のセグメントの頂点の座標である。
x3,y3 と x4,y4 は2番目のセグメントの頂点の座標である。
というように、交点を求めるには、直線の方程式を作る必要があります。
を1次式で表す。
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
にじほうていしき
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
これらの方程式は、2点を通る直線を定義するもので、私たちが必要としているものです。
これらの式から、以下の式でxとyを求める。
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
線が交差しているので、座標(x,y)を持つ共通の交点があり、それを求める必要があります。
交点が線分に属するためには、交点を拘束する、つまり条件をチェックする必要があります。
もし
(((x1<=x)and(x2>=x)and(x3<=x)and(x4 >=x))or((y1<=y)and(y2>=y)and(y3<=y) and(y4>=y)))。
であれば、これらのセグメントの交点が存在し、そうでなければ交点が存在しない。
また、これらのセグメントの平行度を角度係数を用いて確認する必要があります。
k1:=(x2-x1)/(y2-y1) です。
k2:=(x4-x3)/(y4-y3)。
ここで、k1、k2は軸ОХの正方向に対するセグメントの傾斜角の接線であり、k1=k2ならば、セグメントは平行なので、交点はないことになる。
そして、もしかしたら、誰かがアーカイブでレディなものを持っているかもしれない?
MT4で、内部端末メールへのメッセージ(レバレッジ変更、サーバー再起動など)をSMSやメールでリダイレクトするような機能はありますか?
P.s ターミナルウィンドウのタブ、(取引、資産、口座履歴、ニュース、アラート、MESSAGE、など)?