//+------------------------------------------------------------------+//| передача параметров по ссылке |//+------------------------------------------------------------------+double SecondMethod(int &i,int &j)
{
double res;
//---
i*=2;
j/=2;
res=i+j;
//---return(res);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---.int a=14,b=8;
Print("a и b перед вызовом:",a," ",b);
double d=SecondMethod(a,b);
Print("Результат выполнения функции ", d);Print("a и b после вызова:",a," ",b, " ",d);// или здесь. А можно и там и тут…
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
ResetLastError(); // установим значение предопределенной переменной _LastError в нольint pos_total = PositionsTotal(); // объявим переменную для хранения количества открытых позицийif(pos_total > 0) // если есть открытые позиции
{
for(int i=0; i<pos_total; i++) // запустим цикл и переберём все открытые позиции
{
if(PositionGetSymbol(i) == _Symbol) // выберем все открытые позиции по текущему символу
{
ulong pos_id = PositionGetInteger(POSITION_IDENTIFIER);
double pos_price = PositionGetDouble(POSITION_PRICE_OPEN);
double pos_tp = PositionGetDouble(POSITION_TP);
double pos_sl = PositionGetDouble(POSITION_SL);
PrintFormat("Позиция #%d цена = %G тейк-профит = %G стоп-лосс = %G", pos_id, pos_price, pos_tp, pos_sl);
}
else// если выбрать позицию не удалось
{
PrintFormat("Не удалось выбрать позицию по символу %s. Ошибка = ", _Symbol, GetLastError());
}
}
}
}
//+------------------------------------------------------------------+
2023.11.2313:27:26.3857 (GBPUSDrfd,H1) Не удалось выбрать позицию по символу GBPUSDrfd. Ошибка =
2023.11.2313:27:26.3857 (GBPUSDrfd,H1) Не удалось выбрать позицию по символу GBPUSDrfd. Ошибка =
できる。すると、参照渡しされた変数にのみ、2つの値が返される。つまり、この関数は3つの値を返す 。
興味深さのために、d変数を削除した。関数だけを残した。印刷結果は変わっていない。正直なところ、3つの値についてはまったく 理解できません。
ありがとう、ウラジミール。
興味を引くために、d変数を取り除いた。関数だけを残した。印刷結果は変わっていない。正直なところ、3つの値についてはまったく 理解できない。
ありがとう、ウラジミール。
この値は印刷されなかったので、変わっていません。
印刷を追加すればわかります。
この値は印刷されなかったため、変更されていない。
printを追加してください。
印刷しました。変わらない。
また何か誤解していたのかな?それともd変数を プリントする必要が あったのか?これは私たちが話していたことですか?
ありがとう、ウラジミール。
プリントアウトした。そのままで、全ては変わらない。
よろしく、ウラジーミルどこで印刷したんだ?
どこで印刷したのですか?
これで全部わかったよ。))ありがとう!
ウラジーミル
オープンポジションがあるシンボルで実行してみました。正しく動作し、情報は正しく印刷されました。次へ。オープンポジションのないシンボルで実行。オープンポジションがないことの情報は正しく表示されますが、エラーの原因のコードはなぜか表示されません。エラーコードが表示されない理由を教えてください。
よろしくお願いします。
オープンポジションのあるシンボルで起動した。正しく動作し、情報は正しく表示されます。次にオープンポジションのないシンボルで実行してみました。オープンポジションがないことの情報は正しく表示されますが、エラーの原因のコードはなぜか表示されません。エラーコードが表示されない理由を教えてください。
エラーがない場合、エラーコードはどこから来るのでしょうか?ポジションのシンボルが間違っているだけです。
エラーがないのに、なぜエラーコードがあるのですか?ポジションの記号が間違って いるだけだ。
ご回答ありがとうございます!少なくともこのエラーコードは表示されると思っていました:
err_trade_position_not_found
4753
ポジションが見つかりません
シンボルについては同意できません。このシンボルは、まさにこのスクリプトが投げられたチャートのシンボルです。現在、GBPUSDrfdというシンボルのオープンポジションはありませんが、エラーもありません。よくわからない!
ありがとう、ウラジミール。
ご回答ありがとうございます!少なくともこのエラーコードが表示されると思っていました:
err_trade_position_not_found
4753
ポジションが見つかりません
シンボルについては同意できない。シンボルは、このスクリプトが投げられたチャートのシンボルとまったく同じです。GBPUSDrfdというシンボルのオープンポジションはありませんが、エラーもありません。理解できない!
よろしく、ウラジミール。
すべてのポジションが見つかりました!しかし、見つかったポジションの中に必要なシンボルがありません。
すべてのポジションが見つかった!しかし、見つかったポジションの中に、必要なシンボルを持つものがない。
今わかったよ。ありがとうございます!少なくとも1つのオープンポジションがあれば、エラーコード4753は表示されないことがわかりました。
ありがとう、ウラジミール。