EMAのクロス信号の開封問題を見てください.

作者: リン・ハーンおばあちゃんは, 作成日:2021年11月4日 11:34:33, 更新日:

2つのemaパラメータであるema1 (a2) とema2 (a3) が,emaの設定が100以上である場合,fmzが実行しているときにemaとbinanの値が一致しない (emaが100未満の場合正常),開通信号が5-10根k線を早送りまたは遅延させる.

""バックテスト 2021年11月1日 00時00分 終了: 2021年11月2日 00時00分 期間:5m ベース 期間: 1m 取引所: [{eid:Futures_Binance,通貨:BTC_USDT}] args: [[M,8],[A2,100],[A3,200],[K3,500],[K2,300]] "

def accuracy (((): #取引所の精度を取得する global BV1,CV1 exchanges[i].SetContractType (スワップタグ) currency1=_C (exchanges[i].GetCurrency) ticker1=_C ((exchanges[i].GetTicker) について account1=_C ((exchanges[i].GetAccount) all_BV1list=[ALICE_USDT,DODO_USDT,UNFI_USDT,LITU_USDT,ZEN_USDT,FIL_USDT,AAVE_USDT,KSM_USDT,EGLD_USDT,TRB_USDT,CRV_USDT, BAL_USDT,DOT_USDT,SNX_USDT,WAVES_USDT,RLC_USDT,BAND_USDT,KAVA_USDT,SXP_USDT,OMG_USDT,ZRX_USDT,ALGO_USDT, THETA_USDT,QTUM_USDT,BAT_USDT,IOTA_USDT,ONT_USDT,XTZ_USDT,EOS_USDT,XRP_USDT,ICP_USDT,NEO_USDT,ATOM_USDT, BNB_USDT,LINK_USDT,ETC_USDT,BNB_USDT,YFII_USDT,YFI_USDT,DEFI_USDT,MKR_USDT,COMP_USDT,ZEC_USDT,DASH_USDT, XMR_USDT,LTC_USDT,BCH_USDT,ETH_USDT,BTC_USDT] list1=[ALICE_USDT,DODO_USDT,UNFI_USDT,LITU_USDT,ZEN_USDT,FIL_USDT,AAVE_USDT,KSM_USDT,EGLD_USDT,TRB_USDT,CRV_USDT, BAL_USDT,DOT_USDT,SNX_USDT,WAVES_USDT,RLC_USDT,BAND_USDT,KAVA_USDT,SXP_USDT,OMG_USDT,ZRX_USDT,ALGO_USDT, THETA_USDT,QTUM_USDT,BAT_USDT,IOTA_USDT,ONT_USDT,XTZ_USDT,EOS_USDT,XRP_USDT] list2=[ICP_USDT,NEO_USDT,ATOM_USDT,BNB_USDT,LINK_USDT,ETC_USDT,BNB_USDT] list3=[YFII_USDT,YFI_USDT,DEFI_USDT,MKR_USDT,COMP_USDT,ZEC_USDT,DASH_USDT,XMR_USDT,LTC_USDT,BCH_USDT,ETH_USDT,BTC_USDT] if currency1 in list1: リスト1に これは,BV1=1です. if currency1 in list2: if currency1 in list2: if currency1 in list2: if currency1 in list2: if currency1 in list2: if currency1 in list2: if currency1 in list2: if currency1 in list2: これは,BV1=2です. if currency1 in list3: if currency1 in list3: if currency1 in list3: if currency1 in list3: if currency1 in list3: if currency1 in list3: if currency1 in list3: if currency1 in list3: if currency1 in list3: これは,BV1=3です. if currency1 not in all_BV1リスト: これは,BV1=0です. #価格の精度計算 if currency1!= YFI_USDT : RR1=str ((ticker1 [Last]) content1=RR1.split ((".") [-1] weishu1=len ((content1) について CV1=weishu1 ということになります else: はコメントを受け付けていません これは,x=0です. global n1 について account1=_C ((exchange.GetAccount) について walletbalance=account1 [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet balance=account1] [wallet=account2] これは 0.01 です.P0浮気 (財布残高) n1=ラウンド ((P/ティッカー1[最後の],BV1) if n1==0: n1=n1+10**(-BV1)

定義 メイン (: と True の間: グローバル i i の範囲で ((len ((交換)): 取引所[i].SetContractType ((swap) ] 正確さ 取引所[i].設定の限界レベル[M] ticker1=_C(交換[i].GetTicker) 通貨1=_C(交換[i].GetCurrency) position1=_C(交換[i].GetPosition) r=_C(交換[i].GetRecords) rとlen®>9の場合: EMA=TA.EMA (r,A2) EMA2=TA.EMA(r,A3) longsignal=EMA[-3]EMA2[-2] 短信号=EMA[-3]>EMA2[-3]とEMA[-2]

                    if longsignal: #1分钟金叉
                        Log(currency1,'多头信号成立')
                        exchanges[i].SetDirection('buy')
                        exchanges[i].Buy(-1,n1)
                        Log('倒数第二个EMA2:',EMA2[-2],'倒数第三个EMA2:',EMA2[-3])
                        Log('倒数第二个EMA1:',EMA[-2],'倒数第三个EMA1:',EMA[-3])
                        
                        
                    #开空信号
                    if shortsignal: #1分钟死叉
                        Log(currency1,'空头信号成立')
                        exchanges[i].SetDirection('sell')
                        exchanges[i].Sell(-1,n1)
                        Log('倒数第二个EMA2:',EMA2[-2],'倒数第三个EMA2:',EMA2[-3])
                        Log('倒数第二个EMA1:',EMA[-2],'倒数第三个EMA1:',EMA[-3])
                        
                if len(position1)==1:
                    if position1[0]["Type"]==0:
                        if ticker1["Last"]>position1[0].Price+K3:
                            Log(currency1,'多头触发止盈')
                            exchanges[i].SetDirection('closebuy')
                            exchanges[i].Sell(-1,position1[0].Amount)
                            Log('倒数第二个EMA2:',EMA2[-2],'倒数第三个EMA2:',EMA2[-3])
                            Log('倒数第二个EMA1:',EMA[-2],'倒数第三个EMA1:',EMA[-3])
                            
                        if ticker1["Last"]<position1[0].Price-K2:
                            Log(currency1,'多头触发止损')
                            exchanges[i].SetDirection('closebuy')
                            exchanges[i].Sell(-1,position1[0].Amount)
                            Log('倒数第二个EMA2:',EMA2[-2],'倒数第三个EMA2:',EMA2[-3])
                            Log('倒数第二个EMA1:',EMA[-2],'倒数第三个EMA1:',EMA[-3])
                            
                    if position1[0]["Type"]==1:
                        if ticker1["Last"]<position1[0].Price-K3:
                            Log(currency1,'空头触发止盈')
                            exchanges[i].SetDirection('closesell')
                            exchanges[i].Buy(-1,position1[0].Amount)
                            Log('倒数第二个EMA2:',EMA2[-2],'倒数第三个EMA2:',EMA2[-3])
                            Log('倒数第二个EMA1:',EMA[-2],'倒数第三个EMA1:',EMA[-3])
                            
                        if ticker1["Last"]>position1[0].Price+K2:
                            Log(currency1,'空头触发止损')
                            exchanges[i].SetDirection('closesell')
                            exchanges[i].Buy(-1,position1[0].Amount)
                            Log('倒数第二个EMA2:',EMA2[-2],'倒数第三个EMA2:',EMA2[-3])
                            Log('倒数第二个EMA1:',EMA[-2],'倒数第三个EMA1:',EMA[-3])
                            
        Sleep(S)

もっと

小さな夢百度または知らず知らずで検索するEMAアルゴリズム,このようなリデリエーションアルゴリズムの計算する指標値は,送信されるデータ量の大きさに関連している (すなわち,K線列の数). 列列の数が多くなるほど,計算が近い. EMA100を基本的には同じ方法で計算することができます. EMA200は少し誤りがあります.