int testarray[5][2] = {1,2,3,4,5,6,7,8,9,10};// хоть так и можно записать, но в уме нужно держать что это ТАБЛИЦА
void testfunc(int &inarray[][]){ // массив нужно передавать "как есть", но обрабатывать можно выбранную часть string out_str="Result: "+inarray[i,0];
for (int i=1;i<5;i++){// еще нужно учитывать, что счет в массивах начинается с НУЛЯ. "первый - нулевой" out_str += (", "+inarray[i,0]); // здесь бы использовал строковую функцию конкатенации } Print(out_str); } //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- Print("Call first:"); testfunc(testarray); Print("Call second:"); testfunc(testarray); //---- return(0); } //+-----------
for( cnt=0; cnt< total; cnt++){OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);if(OrderType()<=OP_SELL&&// check for opened positionOrderSymbol()==Symbol())// check for symbol{if(OrderType()==OP_BUY)// long position is opened{// check for trailing stopif( TrailFractal){OrderModify(OrderTicket(),OrderOpenPrice(), FindNearFractal(NULL,0,MODE_LOWER),0,0,Green);return(0);}}else// go to short position{// check for trailing stopif( TrailFractal){OrderModify(OrderTicket(),OrderOpenPrice(), FindNearFractal(NULL,0,MODE_UPPER),0,0,Red);return(0);}}}
さらに、もうひとつの質問について。コードは以下の通りです。
for(int i =0; i <OrdersTotal(); i++){// выбор ордераif(OrderSelect( i, SELECT_BY_POS)==false)continue;// not current symbolif(OrderSymbol()!=Symbol())continue;}if(OrderType()==OP_SELL){//при профите >20 pips добавится или докупится ...if(OrderProfit()>20)//////если поставить другое условие открывает много позицийOrderSend(Symbol(),OP_SELL, Lots,Bid,3, sl_sell,0,"Ma+Fr",16384,0,Red);
PeriodForSleep=((Time[0]-Time[1])-(TimeCurrent()-Time[0]))*1000;Sleep( PeriodForSleep);}if(OrderType()==OP_BUY){//при профите >20 pips добавится или докупится ...if(OrderProfit()>20)//////если поставить другое условие открывает много позицийOrderSend(Symbol(),OP_BUY, Lots,Ask,3, sl_buy,0,"Ma+Fr",16384,0,Lime);Sleep( PeriodForSleep);}
2次元配列から1次元を関数に渡す方法を教えてください。
何かと混乱する。
int testarray[5][2] = {1,2,3,4,5,6,7,8,9,10};// хоть так и можно записать, но в уме нужно держать что это ТАБЛИЦА
void testfunc(int &inarray[][]){ // массив нужно передавать "как есть", но обрабатывать можно выбранную часть
string out_str="Result: "+inarray[i,0];
for (int i=1;i<5;i++){// еще нужно учитывать, что счет в массивах начинается с НУЛЯ. "первый - нулевой"
out_str += (", "+inarray[i,0]); // здесь бы использовал строковую функцию конкатенации
}
Print(out_str);
}
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
Print("Call first:");
testfunc(testarray);
Print("Call second:");
testfunc(testarray);
//----
return(0);
}
//+-----------
同じブローカーのプラットフォームを2枚持っています。それぞれにデモ口座が あり、expertsという共有フォルダがあります。
1枚目を開いてから閉じて、2枚目を開くと、2枚目で再度パスワードの入力が必要になるんです。
2つ目を閉じて、1つ目を開くと、今度は1つ目のパスワードが必要です。こんなんでいいのか?
ありがとうございました。
high=iHigh(NULL,60,1); それとも何かおかしいのでしょうか?
すべて正しいです。ただし、複数のタイムフレームやシンボルを使用する場合は、EAに対応するロジックを作成する必要があります。
Все правильно конечно. Но если нужно использовать несколько таймфреймов или инструментов, то нужно делать соотвествующую логику в советнике.
わかりました、調べます。ありがとうございました。
また私です・・・あまり叱らないでください・・・EA歴は2週間ほどです・・・。
フラクタルに基づいてExpert Advisorを作成しましたが、大鹿はフラクタルに基づいて正しく動いているのに、テスト中にログにOrderModifyエラー1が表示され続けています。キムさんのFindNearFractal関数を使いました。コードは以下の通りです。
さらに、もうひとつの質問について。コードは以下の通りです。 追加条件にOrderProfit()>20の代わりにフラクタルブレークスルー(他のシグナルでも可)を設定すると、多くのポジションをオープンしてしまいます。Sleep()を追加してみましたが、 役に立ちません。ここで何が問題なのか?OrderModifyのエラー1は、通常、新しいパラメータがオーダーのパラメータと完全に一致する場合に発生します...
обычно OrderModify error 1 бывает, когда новые параметры точно соответствуют тем, что в ордере..
keekkenenさん、ありがとうございます。パラメータが違います。 その答えは、ここに あります。スレッド内の)アドバイスでは、このエラーに釘を刺すように・・・NormalizeDoubleも役に立ちません。
また、2つ目のエラー(加算について)についてはどうでしょうか。
ペーパープロフィット(未決済ポジションの利益)が現在EAにどのくらいあるか、どうやって調べるのですか?
KimIVはGetProfitOpenPosInPoint()関数を搭載しています。
У KimIV есть функция GetProfitOpenPosInPoint().
この方法で、うまくいくのでしょうか?
それとも、EAにスクリプトコードを挿入した方が良いのでしょうか?