[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 370

 
Boneshapper:

了解です。ありがとうございました。良いオプションだと思うが、過去のデータでシステムをテストすることができない。だから、なんとか自動的に処方してあげたいと思ったんです。他に何かご意見があればお聞かせください。
履歴のテストでは、終了条件を決定する必要があります。利益/損失またはポジションの有効期間、例えば3日以内。これは、OrderModifyを 使用して注文/ポジションのdatetime expirationを変更することによって行うことができます。
 
paladin80:
履歴でテストするには、ポジションのクローズ条件を決めなければなりません。利益/損失またはポジションの有効期間、例えば3日以内。これは、OrderModifyを 使用して、注文/ポジションのdatetime expirationを変更することで可能です。

そうですね、近い条件であることがわかりました。OrderModifyについて読みましたが、まだ理解できていません。夕方からやってみます。今回もとても迅速なご回答をありがとうございました:)
 

すみません、言葉にならないのですが、どうしても知っている人がいたら教えてほしいのです。

Windows 7では、一部のファイルが開けないことがあります。Open with...」を押してプログラムを選択しても、プログラム選択リストに表示されない。この制限を解除する方法をご存知の方はいらっしゃいますか?XPにはなかった。クソセブンスに殺されそう :(

レジストリのクリーニングが必要なのでは?具体的には、FB2形式をダブルクリックすることができないのです。CoolReaderを実行し、すべて順調です。開くと、fb2が望んでいないファイル形式をダブルクリックして実行します。

レジストリ検索Utillitoy JV-16(常にそれを使用)を実行 - まあ、それはちょうど恐怖、fb2を言及するので、多くのレジストリエントリを発見 - も殺すために恐れている。どうすればいいのか?グーグル検索しても何も出てこない :(

 

ごあいさつ

コードの書き直しを手伝ってください。コードは新しいものではないのですが、何かうまくいかないのです。

以下はそのコードです。

  *///-----------------Закрытие по истории в безубыток--------------------
   //---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0;  // суммарный убыток по этим итерациям

datetime 
Time_at_History_Current = 0,
Time_at_History_Previos = 0;     
 
 if(OrdersHistoryTotal() != 0)
   {
    for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
      {
       OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
             if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit();
                 Sum_Loss=Sum_Loss+lastLoss;  // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;
                //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                if(OrderProfit() >= 0)
                  break;
               }
            }
         }
      }
   }

if (Sum_Loss < 0.0) { // Имеем убыток по закрытым позам
  if (((AccountEquity() + Sum_Loss + (Sum_Loss * 0.25)) >= AccountBalance()) && (((totalSell > 0) && (totalBuy < 1)) || ((totalSell < 1) && (totalBuy > 0)))) { // Достигли безубытка
    // Здесь какой-то код, который необходимо выполнить при достижении безубытка
        CloseAllBuy();
           CloseAllSell();
           Sum_Loss = 0.0;
           
  
  }
}
//-----------------------------------------------------------------

マイナストレードが行われた時にループを開き、プラストレードの後、マイナストレードがあった場合、最後に決済した注文の利益分だけマイナス残高を減らし、ゼロより高くなるように頑張ったのですが、どうでしょうか?順序はマイナスで閉じている場合、我々は、利益上の次のトランザクションが損失よりも大きい場合、我々は、次のトランザクションにプラスで閉じている場合、作業を開始しますが、このプラスはマイナスよりも、以前の注文で、負のバランスからこのプラスではなく、次の順序は、すでに我々が前にマイナスで閉じているように、以下の新しい指標と比較することができます。だから、プラス収支なのです。

 
drknn:

すみません、言葉にならないのですが、どうしても知っている人がいたら教えてほしいのです。

Windows 7では、一部のファイルが開けないことがあります。Open with...」を押してプログラムを選択しても、プログラム選択リストに表示されない。この制限を解除する方法をご存知の方はいらっしゃいますか?XPにはなかった。クソセブンスに殺されそう :(

レジストリのクリーニングが必要なのでは?具体的には、FB2形式をダブルクリックすることができないのです。CoolReaderを実行し、すべて順調です。開くと、fb2が望んでいないファイル形式をダブルクリックして実行します。

レジストリ検索Utillitoy JV-16(常にそれを使用)を実行 - まあ、それはちょうど恐怖、fb2を言及するので、多くのレジストリエントリを発見 - も殺すために恐れている。どうすればいいのか?グーグル検索しても何も出てこない :(


スタート - すべての番組 - デフォルトの番組 - マッピングの設定
 
drknn:

すみません、言葉にならないのですが、どうしても知っている人がいたら教えてほしいのです。

Windows 7では、一部のファイルが開けないことがあります。Open with...」を押してプログラムを選択しても、プログラム選択リストに表示されない。この制限を解除する方法をご存知の方はいらっしゃいますか?XPにはなかった。クソセブンスに殺されそう :(

レジストリのクリーニングが必要なのでは?具体的には、FB2形式をダブルクリックすることができないのです。CoolReaderを実行し、すべて順調です。開くと、fb2が望んでいないファイル形式をダブルクリックして実行します。

レジストリ検索Utillitoy JV-16(常にそれを使用)を実行 - まあ、それはちょうど恐怖、fb2を言及するので、多くのレジストリエントリを発見 - も殺すために恐れている。どうすればいいのか?グーグル検索しても何も出てきませんでした :(

http://rhpc.ru/topic/200/
 

みんな...知ってる人助けて!!!!


戦略の本質:ストキャスティクスでエントリー(5,14,3)エグジットもストキャスティクスで行うが、別の期間(5,3,3)で行う。逆信号でなくストキャスで退場させるというのがよくわからない。
問題があって、どうすれば解決できるのか見当もつかないので、説明します。
そこで、私が投稿したコードでは、2つの関数があります
//+--------------------------------------------------------------------------+
//| prepare array of tickets to close |
//+----------------------------------------------------------+
void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9]).
{
int size=ArrayRange(arrayTickets,0);
//----
if (size==0) return;

int i,type,ticket,closeSize;
for (i=0;i<size;i++)
{
type=arrayTickets[i][1];
//注文タイプが 成行注文でない場合はスキップ
if (type>OP_SELL) continue;

if (Reverses) // 成行注文タイプを反転
{
if (type==OP_BUY) type=OP_SELL; else type=OP_BUY;
} ...................net..............................net

//
// マーケットに残すか、クローズ時に配列に追加するか
if (type==OP_BUY)
{
//
// 買いを残すためのコード

// 例として
if (signal==OP_BUY) continue;
}.

if (type==OP_SELL)
{
//
//code allowing to keep selling

//as example
if (signal==OP_SELL) continue;
}.


closeSize=ArrayRange(ticketsClose,0);
ArrayResize(ticketsClose,closeSize+1);
ArrayResize(ticketsClose,closeSize+1);
ticketsClose[closeSize][0] = arrayTickets[i][0]; // ticket #
ticketsClose[closeSize][1]=arrayTickets[i][1]。// 注文の種類

// ここで、何枚閉じるかを指定する
lots[closeSize] = arrayTickets[i][2]; // 閉じる数量
// 部分的に閉じることも可能、その場合は上の行を書き換える必要がある
}
//----
return;
}.

//+----------------------------------------------------------+
//| 指定したチケットで注文を閉じる|
//+----------------------------------------------------------+
void CloseMarketOrders(int ticketsArray[][2], double lotsArray[])
{
//----
int i,size=ArrayRange(ticketsArray,0);
if (size==0) return;

int ticket,type;
double lots.Lot.Lot.Lot.Lot;
bool res;

int total=OrdersTotal();

for (i=0;i<size;i++)
{
ticket = ticketsArray[0];
type = ticketsArray[1];
lots = lotsArray[i];
RefreshRates(); // 念のため市場環境更新

// 買付クローズブロック
if (type==OP_BUY)
{
res = OrderClose(ticket,lots,Bid,Slippage,Orange);
if (!res)
{
Print("Failed to close order to buy #",ticket,"!Error #",GetLastError();
// さらなるエラー処理は自分で書く
}
}

// 売り決済ブロック
if (type==OP_SELL)
{
res = OrderClose(ticket,lots,Ask,Slippage,Orange);
if (!res)
{
Print("Failed to close sell order #",ticket,") { !Error #",GetLastError());
// さらなるエラー処理、自分で書く
}
}

}
//----
return;
}

void PrepareTicketsToClose(int signal, bool Revers, int & ticketsClose[][2], double & lots[],double arrayTickets[][9]) 関数は、注文を閉じるかどうかを決定する条件を渡す必要があります...。
条件をつけてみたが、何も効果がない...。
どなたか、これらの関数にエラーがあるか、あるいは私が失敗したかどうか、見ていただけないでしょうか...。
ファイル:
osc_test.mq4  37 kb
 
ティックストリームでbidが0になることはありますか?(時々)取引セッション
 
tara:

スタート - すべての番組 - デフォルトの番組 - マッピングの設定

この操作により、番組選択画面が表示されます。番組を指定しても、そこに表示されない。
 

エグゼアソシエーションを復元してもダメだった-クールリーダはエグゼアソシエーション。役に立つと思ったから。可哀想に。他に何かあるのでしょうか?そこには他のファイル拡張子へのリンクがあるが、fb2がない。