voidOnTick() { for (int i=0; i<OrdersTotal(); i++) if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())return;
double STO = iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0); double SL=0,TP=0;
if (STO > buy_level)
{ if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss* Point,Digits); if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,NULL,Magic)==-1) Print(GetLastError()); PlaySound("timeout.wav"); Print("Ордер успешно размещен"); } }
voidOnTick() { for (int i=0; i<OrdersTotal(); i++) if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())return;
double STO = iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0); double SL=0,TP=0;
if (STO > buy_level)
{ if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss* Point,Digits); if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,NULL,Magic)==-1) Print(GetLastError()); PlaySound("timeout.wav"); Print("Ордер успешно размещен"); } }
型変換によるデータ消失の可能 性
試してみてください。
コンパイラが指し示すコードの行を表示してください。
そういう線が多いので、新端末に合わせたモジュールをお願いしたわけです。でも、快く引き受けてくださってありがとうございます)
そういう線が多いので、新端末に合わせたモジュールをお願いしたわけです。でも、快く引き受けてくださってありがとうございます)
この線上で:
" 型変換による データ消失の可能性"
は、エラーのあるコード行の行番号と位置である必要があります。
このように、コードの正確な位置を知ることで、すべてのエラーを簡単に修正することができます。
この行の右側に
" 型変換による データ消失の可能性"
には、行番号とエラーのあるコード行の位置があるはずです。
それは、コード内の正確な位置を知ることで、すべてのエラーを簡単に修正することができるのです。
アレクセウ・フェドトフ氏が 提供するExpert Advisorを、私のニーズに合わせて改造してみました。
私の要望は以下の通りです。ワンドのクロスオーバーでポジションをオープンし、反対のクロスオーバーでクローズします。可能であれば、ブレークイーブンにポジションを移します。
しかし、結局は何も開かれない。頭を悩ませているところです。何が問題なのでしょうか?
Alekseu Fedotovが 提供するEAを参考に、自分のニーズに合わせて修正してみました。
私の要望は以下の通りです。クロスしたらポジションをオープンし、再びクロスしたらクローズする。可能であれば、ブレークイーブンにポジションを移します。
しかし、結局は何も開かれない。頭を悩ませているところです。何が問題なのでしょうか?
CMMからのエラーとコードの行を表示し、私は助けるために提供する最後の時間。
EAでインジケータからどのようにシグナルを読み取るか、コードスニペットを表示する。
takeprofit = 400,
slippage = 10,
Magic = 777;
extern double Lot = 0.5,
buy_level = 15;
void OnTick()
{
for (int i=0; i<OrdersTotal(); i++)
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())return;
double STO = iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0);
double SL=0,TP=0;
if (STO > buy_level)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits);
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss* Point,Digits);
if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,NULL,Magic)==-1) Print(GetLastError());
PlaySound("timeout.wav");
Print("Ордер успешно размещен");
}
}
takeprofit = 400,
slippage = 10,
Magic = 777;
extern double Lot = 0.5,
buy_level = 15;
void OnTick()
{
for (int i=0; i<OrdersTotal(); i++)
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())return;
double STO = iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0);
double SL=0,TP=0;
if (STO > buy_level)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits);
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss* Point,Digits);
if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,NULL,Magic)==-1) Print(GetLastError());
PlaySound("timeout.wav");
Print("Ордер успешно размещен");
}
}
ここです。
iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0);
期間(タイムフレーム)を 1,5,15,30,60,240,1440,10080,43200 //M1.M5.M30 ... に変更する。など
を入力するか、15 の代わりにPeriod() を入力すると、手動で TF を切り替えたときに、現在の TF が自動的に設定されます。