利用 TensorFlow 实现排序和搜索算法

原文地址 http://blog.csdn.net/gitchat/article/details/78588732

当我们提到 TensorFlow 的时候,我们仅仅只会关注它是一个很好的神经网络和深度学习的库。

但是,其实 TensorFlow 具有 tf.cond( https://www.tensorflow.org/api_docs/python/tf/cond ) 和 tf.while_loop( https://www.tensorflow.org/api_docs/python/tf/while_loop 函数,前者可以处理判断语句,后者可以处理循环语句,所以它也具有一般编程语言相同的表达式。

简单的说,我们可以用 C 语言或者 Python 语言实现的排序和搜索算法都可以在 TensorFlow 图中实现。

在本文中,我们就是要介绍 TensorFlow 的另一面,它的一般编程语言表达方式。我们利用 TensorFlow 图实现了一些简单算法,诸如 FizzBuzz 问题,线性搜索,冒泡排序 等等。

1. API 解释

1.1 类似判断语句的 API:tf.cond()

 
  

cond(    pred,    true_fn=None,    false_fn=None,    strict=False,    name=None,    fn1=None,    fn2=None)

tf.cond(...) 是一个等效于 if 语句的节点。根据其中的参数 pred 返回的布尔值来判断返回什么值,比如当参数 pred  true 值时,节点返回参数 true_fn 的值,当参数 pred  false 时,节点返回参数 false_fn 的值。但是,其中的参数 true_fn 和参数 false_fn 都是需要是 lambda 或者函数。比如:

 
  

z = tf.multiply(a, b)result = tf.cond(x < y, lambda: tf.add(x, z), lambda: tf.square(y))

当 x < y 是 true 时,节点就会去执行 tf.add 操作。当 x < y 是 false 时,节点就会去执行 tf.square 操作。

利用 TensorFlow 实现排序和搜索算法_第1张图片

接下来,我们来看一个完整的例子,如下:

 
  

x = tf.constant(2)y = tf.constant(5)def f1():    return tf.multiply(x, 17)def f2():    return tf.add(y, 23)r = tf.cond(tf.less(x, y), f1, f2)with tf.Session() as sess:    print(sess.run(r))

请注意:API 中的某些参数被忽略了,因为它们将在以后的版本中被删除。

  • tf.cond — TensorFlow API r1.3(https://www.tensorflow.org/api_docs/python/tf/cond)

1.2 类似判断语句的 API: tf.while_loop()

 
  

while_loop(    cond, # Condition      body, # Process to be executed when cond is True    loop_vars, # Argument to body    shape_invariants=None,    parallel_iterations=10,    back_prop=True,    swap_memory=False,    name=None)

tf.while_loop(...) 是一个等效于 while 语句的节点。根据其中的参数 cond 的布尔值来判断是否将循环继续,比如当参数 pred  true 值时,节点去执行 body 中的语句,当参数 pred  false 时,那么退出这个函数。比如:

 
  

i = tf.constant(0)c = lambda i: tf.less(i, 10)b = lambda i: tf.add(i, 1)r = tf.while_loop(c, b, [i])

当 i < 10 时,cond 返回的值是 true,所以节点会去执行 body 中的语句。当 i == 10 时,cond 返回的值是 false,那么节点就会退出。这种执行方式和一般语言中的 while 非常像。

利用 TensorFlow 实现排序和搜索算法_第2张图片

我们也可以将循环式表达成如下:

 
  

while(cond(loop_vars)){     loop_vars = body(loop_vars); }

接下来,我们来看一个完整的例子,如下:

 
  

import tensorflow as tfimport numpy as npdef body(x):    a = tf.random_uniform(shape=[2, 2], dtype=tf.int32, maxval=100)    b = tf.constant(np.array([[1, 2], [3, 4]]), dtype=tf.int32)    c = a + b    return tf.nn.relu(x + c)def condition(x):    return tf.reduce_sum(x) < 100x = tf.Variable(tf.constant(0, shape=[2, 2]))with tf.Session():    tf.initialize_all_variables().run()    result = tf.while_loop(condition, body, [x])    print(result.eval())

  • tf.while_loop — TensorFlow API r1.3(https://www.tensorflow.org/api_docs/python/tf/while_loop)

2. 在 TensorFlow 中实现算法

2.1 Fizz Buzz 问题

请依次打印从1至100的整数,在该数能被3整除的时候,打印”Fizz”,能被5整除的时候打印”Buzz”,如果既能被3又能被5整除的时候,打印”FizzBuzz”。

 
  

import tensorflow as tfclass FizzBuzz():    def __init__(self, length=30):        self.length = length  # 程序需要执行的序列长度        self.array = tf.Variable([str(i) for i in range(1, length+1)], dtype=tf.string, trainable=False)  # 最后程序返回的结果        self.graph = tf.while_loop(self.cond, self.body, [1, self.array],)   # 对每一个值进行循环判断    def run(self):        with tf.Session() as sess:            tf.global_variables_initializer().run()            return sess.run(self.graph)        def cond(self, i, _):        return (tf.less(i, self.length+1)) # 判断是否是最后一个值    def body(self, i, _):        flow = tf.cond(            tf.equal(tf.mod(i, 15), 0),  # 如果值能被 15 整除,那么就把该位置赋值为 FizzBuzz                lambda: tf.assign(self.array[i - 1], 'FizzBuzz'),                lambda: tf.cond(tf.equal(tf.mod(i, 3), 0), # 如果值能被 3 整除,那么就把该位置赋值为 Fizz                        lambda: tf.assign(self.array[i - 1], 'Fizz'),                        lambda: tf.cond(tf.equal(tf.mod(i, 5), 0),   # 如果值能被 5 整除,那么就把该位置赋值为 Buzz                                lambda: tf.assign(self.array[i - 1], 'Buzz'),                                lambda: self.array  # 最后返回的结果                )            )        )        return (tf.add(i, 1), flow)if __name__ == '__main__':    fizzbuzz = FizzBuzz(length=50)    ix, array = fizzbuzz.run()    print(array)

输出结果:

 
  

['1' '2' 'Fizz' '4' 'Buzz' 'Fizz' '7' '8' 'Fizz' 'Buzz' '11' 'Fizz' '13' '14' 'FizzBuzz' '16' '17' 'Fizz' '19' 'Buzz' 'Fizz' '22' '23' 'Fizz' 'Buzz' '26' 'Fizz' '28' '29' 'FizzBuzz' '31' '32' 'Fizz' '34' 'Buzz' 'Fizz' '37' '38' 'Fizz' 'Buzz' '41' 'Fizz' '43' '44' 'FizzBuzz' '46' '47' 'Fizz' '49' 'Buzz']

2.2 线性搜索

var zn1701_data = {    'code':'zn1701.shf',    'total':811,    'data':    [        {'close':15250,'date':41659,'markup':-0.00196335078534031},        {'close':15220,'date':41660,'markup':-0.00262123197903014},        {'close':15315,'date':41661,'markup':0.00525106662290778},        {'close':15255,'date':41662,'markup':-0.00228907782864617},        {'close':15190,'date':41663,'markup':-0.00556464811783961},        {'close':15070,'date':41666,'markup':-0.0101806239737274},        {'close':15075,'date':41667,'markup':-0.00297619047619048},        {'close':15065,'date':41668,'markup':-0.00066334991708126},        {'close':15020,'date':41669,'markup':-0.00232480903354367},        {'close':15045,'date':41677,'markup':0.00166444740346205},        {'close':15150,'date':41680,'markup':0.00597609561752988},        {'close':15045,'date':41681,'markup':-0.0043017868960953},        {'close':15080,'date':41682,'markup':-0.000662690523525514},        {'close':15080,'date':41683,'markup':0.00166057788110262},        {'close':15090,'date':41684,'markup':0.000331455087835598},        {'close':15200,'date':41687,'markup':0.00829187396351575},        {'close':15155,'date':41688,'markup':-0.00164690382081686},        {'close':15260,'date':41689,'markup':0.00560131795716639},        {'close':15210,'date':41690,'markup':-0.00131319763624425},        {'close':15225,'date':41691,'markup':-0.000656383327863472},        {'close':15065,'date':41694,'markup':-0.00888157894736842},        {'close':15075,'date':41695,'markup':-0.00099403578528827},        {'close':15150,'date':41696,'markup':0.00364359059291156},        {'close':15130,'date':41697,'markup':0.000992391663910023},        {'close':15135,'date':41698,'markup':-0.000330250990752972},        {'close':15080,'date':41701,'markup':-0.00330469266358229},        {'close':15140,'date':41702,'markup':0.00198544010589014},        {'close':15290,'date':41703,'markup':0.0129181848294137},        {'close':15200,'date':41704,'markup':-0.00523560209424084},        {'close':15170,'date':41705,'markup':-0.0023018743834265},        {'close':14775,'date':41708,'markup':-0.0263591433278418},        {'close':14920,'date':41709,'markup':0.00336247478143914},        {'close':14885,'date':41710,'markup':0.000672268907563025},        {'close':14795,'date':41711,'markup':-0.00269632625547691},        {'close':14765,'date':41712,'markup':-0.00505390835579515},        {'close':14655,'date':41715,'markup':-0.00879269529928982},        {'close':14700,'date':41716,'markup':-0.00169779286926995},        {'close':14755,'date':41717,'markup':0.00408302143586254},        {'close':14780,'date':41718,'markup':0.00203389830508475},        {'close':14785,'date':41719,'markup':0.00339328130302002},        {'close':14770,'date':41722,'markup':0.00101660454083362},        {'close':14805,'date':41723,'markup':0.00304878048780488},        {'close':14875,'date':41724,'markup':0.00574712643678161},        {'close':14805,'date':41725,'markup':-0.00269450993600539},        {'close':14855,'date':41726,'markup':0.00202360876897133},        {'close':14800,'date':41729,'markup':-0.00269541778975741},        {'close':14815,'date':41730,'markup':-0.00168463611859838},        {'close':14840,'date':41731,'markup':0.00134952766531714},        {'close':14845,'date':41732,'markup':0.00270178993583249},        {'close':14860,'date':41733,'markup':0.00236087689713322},        {'close':14905,'date':41737,'markup':0.00404176490400808},        {'close':14930,'date':41738,'markup':0.00268636668905306},        {'close':14940,'date':41739,'markup':0.000669792364367046},        {'close':15000,'date':41740,'markup':0.00569896077774053},        {'close':14980,'date':41743,'markup':0.000668002672010688},        {'close':14975,'date':41744,'markup':0.00167224080267559},        {'close':14990,'date':41745,'markup':-0.000333444481493831},        {'close':15040,'date':41746,'markup':0.00602006688963211},        {'close':15075,'date':41747,'markup':0.00232712765957447},        {'close':15065,'date':41750,'markup':0.00066423115244105},        {'close':15070,'date':41751,'markup':0.000664010624169987},        {'close':15190,'date':41752,'markup':0.00863213811420983},        {'close':15195,'date':41753,'markup':0.0019782393669634},        {'close':15215,'date':41754,'markup':0.00429042904290429},        {'close':15135,'date':41757,'markup':-0.0032927230819888},        {'close':15065,'date':41758,'markup':-0.00561056105610561},        {'close':15070,'date':41759,'markup':-0.00330687830687831},        {'close':15130,'date':41764,'markup':0.00498173364330787},        {'close':15135,'date':41765,'markup':0.00132318888521336},        {'close':15160,'date':41766,'markup':0.00330906684315023},        {'close':15075,'date':41767,'markup':-0.00429326287978864},        {'close':15110,'date':41768,'markup':0.00132538104705103},        {'close':15205,'date':41771,'markup':0.00828912466843501},        {'close':15250,'date':41772,'markup':0.00693298118190822},        {'close':15240,'date':41773,'markup':0},        {'close':15250,'date':41774,'markup':0.00262984878369494},        {'close':15170,'date':41775,'markup':-0.00557194362504097},        {'close':15250,'date':41778,'markup':0.00394996708360764},        {'close':15255,'date':41779,'markup':0.0029585798816568},        {'close':15205,'date':41780,'markup':-0.00262381108560184},        {'close':15190,'date':41781,'markup':-0.00131492439184747},        {'close':15215,'date':41782,'markup':0.00263591433278418},        {'close':15235,'date':41785,'markup':0.00164365548980934},        {'close':15205,'date':41786,'markup':-0.00164149704530532},        {'close':15260,'date':41787,'markup':0.00295760762405521},        {'close':15125,'date':41788,'markup':-0.00754593175853018},        {'close':15150,'date':41789,'markup':-0.00230490615739216},        {'close':15185,'date':41793,'markup':0.00330360092500826},        {'close':15175,'date':41794,'markup':-0.000987491770901909},        {'close':15195,'date':41795,'markup':0.000988142292490119},        {'close':15200,'date':41796,'markup':0.001977587343441},        {'close':15335,'date':41799,'markup':0.00954575378538512},        {'close':15395,'date':41800,'markup':0.00884665792922674},        {'close':15630,'date':41801,'markup':0.017246989912138},        {'close':15500,'date':41802,'markup':-0.00577293136626042},        {'close':15365,'date':41803,'markup':-0.0137997432605905},        {'close':15360,'date':41806,'markup':-0.00227346541084768},        {'close':15450,'date':41807,'markup':0.0048780487804878},        {'close':15500,'date':41808,'markup':0.00518806744487678},        {'close':15525,'date':41809,'markup':0.000644537544311956},        {'close':15715,'date':41810,'markup':0.0122383252818035},        {'close':15765,'date':41813,'markup':0.00638365783593999},        {'close':15670,'date':41814,'markup':-0.00571065989847716},        {'close':15715,'date':41815,'markup':-0.000318066157760814},        {'close':15795,'date':41816,'markup':0.00829875518672199},        {'close':15770,'date':41817,'markup':0.00190597204574333},        {'close':15945,'date':41820,'markup':0.00981633945535149},        {'close':16040,'date':41821,'markup':0.0123067213632061},        {'close':15775,'date':41822,'markup':-0.01437050921587},        {'close':16210,'date':41823,'markup':0.0256248022777602},        {'close':16230,'date':41824,'markup':0.00526478786001858},        {'close':16040,'date':41827,'markup':-0.00926497838171711},        {'close':16390,'date':41828,'markup':0.018961765620143},        {'close':16385,'date':41829,'markup':0.00644963144963145},        {'close':16320,'date':41830,'markup':-0.00214001834301437},        {'close':16250,'date':41831,'markup':-0.00306748466257669},        {'close':16410,'date':41834,'markup':0.00922509225092251},        {'close':16615,'date':41835,'markup':0.0128009753124048},        {'close':16610,'date':41836,'markup':0.00850030358227079},        {'close':16615,'date':41837,'markup':-0.00150240384615385},        {'close':16575,'date':41838,'markup':-0.00210716435881999},        {'close':16705,'date':41841,'markup':0.00300210147102972},        {'close':16945,'date':41842,'markup':0.0189416716776909},        {'close':17175,'date':41843,'markup':0.0126768867924528},        {'close':17100,'date':41844,'markup':0.00263852242744063},        {'close':17370,'date':41845,'markup':0.0157894736842105},        {'close':17380,'date':41848,'markup':0.00841311285175515},        {'close':17370,'date':41849,'markup':0.00201903663109316},        {'close':16810,'date':41850,'markup':-0.0327963176064442},        {'close':16860,'date':41851,'markup':-0.00295683027794205},        {'close':16815,'date':41852,'markup':-0.00502958579881657},        {'close':16830,'date':41855,'markup':0.00178571428571429},        {'close':17045,'date':41856,'markup':0.0139797739440809},        {'close':16875,'date':41857,'markup':-0.0114235500878735},        {'close':16960,'date':41858,'markup':0.00236406619385343},        {'close':16640,'date':41859,'markup':-0.016548463356974},        {'close':16640,'date':41862,'markup':-0.00952380952380952},        {'close':16760,'date':41863,'markup':0.00630441308916241},        {'close':16580,'date':41864,'markup':-0.00718562874251497},        {'close':16440,'date':41865,'markup':-0.0146838477674558},        {'close':16455,'date':41866,'markup':-0.000303766707168894},        {'close':16450,'date':41869,'markup':0.000912686340127776},        {'close':16555,'date':41870,'markup':0.00699513381995134},        {'close':16745,'date':41871,'markup':0.0136198547215496},        {'close':16830,'date':41872,'markup':0.0108108108108108},        {'close':16870,'date':41873,'markup':0.00327088908712459},        {'close':16740,'date':41876,'markup':-0.00770598695909899},        {'close':16915,'date':41877,'markup':0.00985074626865672},        {'close':16845,'date':41878,'markup':0.00477184610796302},        {'close':16830,'date':41879,'markup':-0.00473092844470727},        {'close':16725,'date':41880,'markup':-0.00741839762611276},        {'close':16715,'date':41883,'markup':0.00119796346211441},        {'close':17010,'date':41884,'markup':0.0137067938021454},        {'close':16930,'date':41885,'markup':0.00296208530805687},        {'close':17150,'date':41886,'markup':0.00586510263929619},        {'close':17210,'date':41887,'markup':0.00997652582159624},        {'close':16720,'date':41891,'markup':-0.027058481233634},        {'close':16415,'date':41892,'markup':-0.0252375296912114},        {'close':16270,'date':41893,'markup':-0.00762427569380909},        {'close':16420,'date':41894,'markup':0.00152485513876182},        {'close':16330,'date':41897,'markup':0.000919399325773828},        {'close':16255,'date':41898,'markup':-0.00459277403551745},        {'close':16425,'date':41899,'markup':0.00859686828369665},        {'close':16250,'date':41900,'markup':-0.0058121749770572},        {'close':16295,'date':41901,'markup':-0.000306748466257669},        {'close':15935,'date':41904,'markup':-0.0241886099203919},        {'close':16090,'date':41905,'markup':-0.00402352212937171},        {'close':16345,'date':41906,'markup':0.0180629087511679},        {'close':16385,'date':41907,'markup':0.00830769230769231},        {'close':16440,'date':41908,'markup':0.00182815356489945},        {'close':16430,'date':41911,'markup':0.00213479719426654},        {'close':16800,'date':41912,'markup':0.0237659963436929},        {'close':16800,'date':41920,'markup':0.00870609426598619},        {'close':16915,'date':41921,'markup':0.00505050505050505},        {'close':16645,'date':41922,'markup':-0.00952097590002975},        {'close':16805,'date':41925,'markup':-0.000297441998810232},        {'close':16805,'date':41926,'markup':0.00448296473401076},        {'close':16705,'date':41927,'markup':-0.00624628197501487},        {'close':16290,'date':41928,'markup':-0.0265909769943233},        {'close':16170,'date':41929,'markup':-0.0155251141552511},        {'close':16265,'date':41932,'markup':0.00525339925834363},        {'close':16150,'date':41933,'markup':-0.00980993255671367},        {'close':16355,'date':41934,'markup':0.00894509561998766},        {'close':16615,'date':41935,'markup':0.0187001839362354},        {'close':16640,'date':41936,'markup':0.0109356014580802},        {'close':16555,'date':41939,'markup':-0.0036111947035811},        {'close':16530,'date':41940,'markup':-0.00361663652802893},        {'close':16565,'date':41941,'markup':-0.000301750150875075},        {'close':16590,'date':41942,'markup':0.00393343419062027},        {'close':16880,'date':41943,'markup':0.0119904076738609},        {'close':16775,'date':41946,'markup':0.00298953662182362},        {'close':16935,'date':41947,'markup':0.00623885918003565},        {'close':16380,'date':41948,'markup':-0.0307692307692308},        {'close':16390,'date':41949,'markup':-0.0105644431029279},        {'close':16555,'date':41950,'markup':0.00914355379457482},        {'close':16760,'date':41953,'markup':0.0182260024301337},        {'close':16700,'date':41954,'markup':0.00119904076738609},        {'close':16715,'date':41955,'markup':-0.00149342891278375},        {'close':16745,'date':41956,'markup':0.00029868578255675},        {'close':16590,'date':41957,'markup':-0.0104384133611691},        {'close':16705,'date':41960,'markup':0.0036046860919195},        {'close':16780,'date':41961,'markup':0.00509134471398622},        {'close':16665,'date':41962,'markup':-0.00299132515704457},        {'close':16685,'date':41963,'markup':0.000899820035992801},        {'close':16855,'date':41964,'markup':0.00867743865948534},        {'close':16875,'date':41967,'markup':0.00686157517899761},        {'close':16990,'date':41968,'markup':0.000294377391816309},        {'close':16805,'date':41969,'markup':-0.00650310375406444},        {'close':16855,'date':41970,'markup':-0.000889152341434499},        {'close':16740,'date':41971,'markup':-0.0053475935828877},        {'close':16365,'date':41974,'markup':-0.0235680190930788},        {'close':16530,'date':41975,'markup':0.0070057873895827},        {'close':16515,'date':41976,'markup':-0.00241618846270009},        {'close':16690,'date':41977,'markup':0.0121285627653123},        {'close':16705,'date':41978,'markup':0.00814725407362704},        {'close':16625,'date':41981,'markup':-0.00449101796407186},        {'close':16570,'date':41982,'markup':-0.00748727163821503},        {'close':16600,'date':41983,'markup':0.000602772754671489},        {'close':16400,'date':41984,'markup':-0.0129401143544989},        {'close':16465,'date':41985,'markup':0.000911854103343465},        {'close':16565,'date':41988,'markup':0.00760340632603406},        {'close':16390,'date':41989,'markup':-0.00786924939467312},        {'close':16255,'date':41990,'markup':-0.0121543603767852},        {'close':15905,'date':41991,'markup':-0.025130248237818},        {'close':16190,'date':41992,'markup':0.00309789343246592},        {'close':16340,'date':41995,'markup':0.0152221186703945},        {'close':16370,'date':41996,'markup':0.00398650720637841},        {'close':16400,'date':41997,'markup':0.00428658909981629},        {'close':16380,'date':41998,'markup':-0.00061012812690665},        {'close':16350,'date':41999,'markup':-0.00030571690614491},        {'close':16430,'date':42002,'markup':0.000913798355162961},        {'close':16400,'date':42003,'markup':-0.000304785126485827},        {'close':16780,'date':42004,'markup':0.0247328244274809},        {'close':16720,'date':42009,'markup':0.00390273191233864},        {'close':16740,'date':42010,'markup':-0.000298596595998806},        {'close':16630,'date':42011,'markup':-0.00299760191846523},        {'close':16465,'date':42012,'markup':-0.012001200120012},        {'close':16455,'date':42013,'markup':-0.0036330608537693},        {'close':16410,'date':42016,'markup':-0.00515307668990603},        {'close':16255,'date':42017,'markup':-0.0139520776463452},        {'close':15630,'date':42018,'markup':-0.042572741194487},        {'close':15870,'date':42019,'markup':0.00316055625790139},        {'close':15810,'date':42020,'markup':-0.00157878118092832},        {'close':16065,'date':42023,'markup':0.0142045454545455},        {'close':16035,'date':42024,'markup':0.00564440263405456},        {'close':16155,'date':42025,'markup':0.0096875},        {'close':16360,'date':42026,'markup':0.0145736434108527},        {'close':16235,'date':42027,'markup':-0.00398773006134969},        {'close':16115,'date':42030,'markup':-0.0122586576769844},        {'close':16275,'date':42031,'markup':0.0111835973904939},        {'close':16335,'date':42032,'markup':0.00307031010132023},        {'close':16090,'date':42033,'markup':-0.0116707616707617},        {'close':16020,'date':42034,'markup':-0.00958268933539413},        {'close':16200,'date':42037,'markup':0.00934579439252336},        {'close':16280,'date':42038,'markup':0.00680272108843537},        {'close':16330,'date':42039,'markup':0.00523237919359803},        {'close':16270,'date':42040,'markup':-0.00671550671550672},        {'close':16390,'date':42041,'markup':0.00613873542050338},        {'close':16355,'date':42044,'markup':0.00306654400490647},        {'close':16355,'date':42045,'markup':-0.000305623471882641},        {'close':16200,'date':42046,'markup':-0.0103848503359805},        {'close':16235,'date':42047,'markup':0.00092478421701603},        {'close':16350,'date':42048,'markup':0.0111317254174397},        {'close':16405,'date':42051,'markup':0.00582464745554874},        {'close':16320,'date':42052,'markup':-0.00366300366300366},        {'close':16080,'date':42060,'markup':-0.0174152153987168},        {'close':16025,'date':42061,'markup':-0.00280024891101431},        {'close':16050,'date':42062,'markup':0.00187265917602996},        {'close':16145,'date':42065,'markup':0.0059190031152648},        {'close':15960,'date':42066,'markup':-0.00869565217391304},        {'close':15875,'date':42067,'markup':-0.00997817274711568},        {'close':15815,'date':42068,'markup':-0.00628338045868677},        {'close':15725,'date':42069,'markup':-0.00819930621255125},        {'close':15740,'date':42072,'markup':-0.00253485424588086},        {'close':15750,'date':42073,'markup':0.000317561130517625},        {'close':15695,'date':42074,'markup':-0.00538656527249683},        {'close':15720,'date':42075,'markup':0.000318167356029271},        {'close':15730,'date':42076,'markup':0.00479080166081124},        {'close':15815,'date':42079,'markup':0.00764574705320166},        {'close':15690,'date':42080,'markup':-0.00412567438908283},        {'close':15615,'date':42081,'markup':-0.00731087094723458},        {'close':15625,'date':42082,'markup':-0.00223499361430396},        {'close':15650,'date':42083,'markup':0.00224143451809158},        {'close':15855,'date':42086,'markup':0.0124521072796935},        {'close':15910,'date':42087,'markup':0.00505369551484523},        {'close':15910,'date':42088,'markup':-0.00188205771643664},        {'close':15965,'date':42089,'markup':0.00219711236660389},        {'close':15945,'date':42090,'markup':-0.00156543519098309},        {'close':15965,'date':42093,'markup':-0.000625978090766823},        {'close':15985,'date':42094,'markup':0.000625978090766823},        {'close':15975,'date':42095,'markup':-0.00405236907730673},        {'close':16000,'date':42096,'markup':0.0028204324663115},        {'close':16160,'date':42097,'markup':0.0106316447779862},        {'close':16215,'date':42101,'markup':0.00558139534883721},        {'close':16190,'date':42102,'markup':-0.000308737264587836},        {'close':16165,'date':42103,'markup':-0.0036979969183359},        {'close':16360,'date':42104,'markup':0.0117501546072975},        {'close':16450,'date':42107,'markup':0.0110633066994468},        {'close':16330,'date':42108,'markup':-0.00396462336078073},        {'close':16425,'date':42109,'markup':0.00366636113657195},        {'close':16560,'date':42110,'markup':0.0112977099236641},        {'close':16620,'date':42111,'markup':0.00514061082552162},        {'close':16475,'date':42114,'markup':-0.00961827472197175},        {'close':16420,'date':42115,'markup':-0.00875339571385451},        {'close':16555,'date':42116,'markup':0.00791476407914764},        {'close':16590,'date':42117,'markup':0.00393343419062027},        {'close':16595,'date':42118,'markup':0.000602954476936991},        {'close':16810,'date':42121,'markup':0.0157099697885196},        {'close':17015,'date':42122,'markup':0.0149120190873844},        {'close':16860,'date':42123,'markup':-0.00794351279788173},        {'close':17000,'date':42124,'markup':0.00265408434090239},        {'close':17210,'date':42128,'markup':0.012948793407887},        {'close':17070,'date':42129,'markup':-0.00640279394644936},        {'close':17370,'date':42130,'markup':0.0151957919345412},        {'close':17185,'date':42131,'markup':-0.010650546919977},        {'close':17105,'date':42132,'markup':-0.00869313242538395},        {'close':17095,'date':42135,'markup':-0.00262543757292882},        {'close':16870,'date':42136,'markup':-0.00968594071030232},        {'close':17140,'date':42137,'markup':0.0139012126589766},        {'close':17000,'date':42138,'markup':-0.00234741784037559},        {'close':16935,'date':42139,'markup':-0.00440917107583774},        {'close':16875,'date':42142,'markup':-0.0014792899408284},        {'close':16865,'date':42143,'markup':0.00267538644470868},        {'close':16630,'date':42144,'markup':-0.0121770121770122},        {'close':16620,'date':42145,'markup':-0.002999400119976},        {'close':16615,'date':42146,'markup':0.00211097708082027},        {'close':16520,'date':42149,'markup':-0.00571772494733674},        {'close':16525,'date':42150,'markup':0.0018187329493786},        {'close':16630,'date':42151,'markup':0},        {'close':16835,'date':42152,'markup':0.0138512496236073},        {'close':16850,'date':42153,'markup':0.00717274357441721},        {'close':16615,'date':42156,'markup':-0.0121878715814507},        {'close':16540,'date':42157,'markup':-0.00809595202398801},        {'close':16345,'date':42158,'markup':-0.0111917725347852},        {'close':16405,'date':42159,'markup':-0.0048528965726418},        {'close':16210,'date':42160,'markup':-0.0106805004577357},        {'close':16275,'date':42163,'markup':-0.00214592274678112},        {'close':16330,'date':42164,'markup':0.00337941628264209},        {'close':16420,'date':42165,'markup':0.00551132884262094},        {'close':16285,'date':42166,'markup':-0.00852359208523592},        {'close':16130,'date':42167,'markup':-0.0125497398224671},        {'close':16090,'date':42170,'markup':-0.00648348255634455},        {'close':16095,'date':42171,'markup':-0.00463821892393321},        {'close':15900,'date':42172,'markup':-0.0121155638397018},        {'close':15885,'date':42173,'markup':-0.00749765698219306},        {'close':15695,'date':42174,'markup':-0.0119609694680516},        {'close':15595,'date':42178,'markup':-0.0101555061885116},        {'close':15790,'date':42179,'markup':0.0108834827144686},        {'close':15630,'date':42180,'markup':-0.00350653490596111},        {'close':15625,'date':42181,'markup':-0.00318979266347687},        {'close':15400,'date':42184,'markup':-0.0147152911068458},        {'close':15220,'date':42185,'markup':-0.018381167365366},        {'close':15230,'date':42186,'markup':-0.00749429781687846},        {'close':15575,'date':42187,'markup':0.0226526592252134},        {'close':15520,'date':42188,'markup':0.00226025185663545},        {'close':15145,'date':42191,'markup':-0.0254182754182754},        {'close':15215,'date':42192,'markup':-0.00294888597640891},        {'close':14560,'date':42193,'markup':-0.0461840812315755},        {'close':15195,'date':42194,'markup':0.0294715447154472},        {'close':15290,'date':42195,'markup':0.0172987358616101},        {'close':15245,'date':42198,'markup':-0.00457068233757754},        {'close':15470,'date':42199,'markup':0.0157583716349311},        {'close':15695,'date':42200,'markup':0.0112757731958763},        {'close':15760,'date':42201,'markup':0.0112287455887071},        {'close':15665,'date':42202,'markup':-0.00191143676330041},        {'close':15550,'date':42205,'markup':-0.00734120651133099},        {'close':15580,'date':42206,'markup':-0.000320821302534488},        {'close':15205,'date':42207,'markup':-0.0215572715572716},        {'close':15250,'date':42208,'markup':-0.00909681611435997},        {'close':14985,'date':42209,'markup':-0.0128458498023715},        {'close':14750,'date':42212,'markup':-0.0218832891246684},        {'close':14835,'date':42213,'markup':-0.00201816347124117},        {'close':15100,'date':42214,'markup':0.0219966159052453},        {'close':14850,'date':42215,'markup':-0.0152519893899204},        {'close':14885,'date':42216,'markup':-0.0040147206423553},        {'close':14585,'date':42219,'markup':-0.0191661062542031},        {'close':14735,'date':42220,'markup':0.00067911714770798},        {'close':14735,'date':42221,'markup':0.00717703349282297},        {'close':14625,'date':42222,'markup':-0.00746521886664404},        {'close':14410,'date':42223,'markup':-0.0153741031773147},        {'close':14530,'date':42226,'markup':0.00762829403606103},        {'close':14680,'date':42227,'markup':0.0162686050536518},        {'close':14805,'date':42228,'markup':0.00920245398773006},        {'close':14980,'date':42229,'markup':0.0242735042735043},        {'close':14870,'date':42230,'markup':-0.00501840080294413},        {'close':14905,'date':42233,'markup':-0.000335345405767941},        {'close':14690,'date':42234,'markup':-0.0144246897014425},        {'close':14695,'date':42235,'markup':-0.00642325895875592},        {'close':14740,'date':42236,'markup':0.00820793433652531},        {'close':14700,'date':42237,'markup':-0.00203665987780041},        {'close':14325,'date':42240,'markup':-0.0337268128161889},        {'close':14360,'date':42241,'markup':-0.00931355639875819},        {'close':14445,'date':42242,'markup':0.00382209867963864},        {'close':14470,'date':42243,'markup':-0.00206896551724138},        {'close':14700,'date':42244,'markup':0.0208333333333333},        {'close':14655,'date':42247,'markup':0.000682826903379993},        {'close':14680,'date':42248,'markup':-0.00339443312966735},        {'close':14810,'date':42249,'markup':0.00851208716377256},        {'close':14770,'date':42254,'markup':0.00203527815468114},        {'close':14630,'date':42255,'markup':-0.0084717045069468},        {'close':14905,'date':42256,'markup':0.0201916495550992},        {'close':14915,'date':42257,'markup':0.00403904409289801},        {'close':14935,'date':42258,'markup':0.00403361344537815},        {'close':14695,'date':42261,'markup':-0.0124327956989247},        {'close':14380,'date':42262,'markup':-0.0267343485617597},        {'close':14440,'date':42263,'markup':-0.00241796200345423},        {'close':14455,'date':42264,'markup':0.00416811392844738},        {'close':14310,'date':42265,'markup':-0.0100311310965064},        {'close':13685,'date':42268,'markup':-0.0483310152990264},        {'close':13530,'date':42269,'markup':-0.0220455366823274},        {'close':13625,'date':42270,'markup':0.00147004777655274},        {'close':13820,'date':42271,'markup':0.0233246945575713},        {'close':13705,'date':42272,'markup':0.00109569028487947},        {'close':13450,'date':42275,'markup':-0.0253623188405797},        {'close':13435,'date':42276,'markup':-0.00921828908554572},        {'close':13820,'date':42277,'markup':0.0313432835820895},        {'close':13625,'date':42285,'markup':-0.00219699743683632},        {'close':14295,'date':42286,'markup':0.0407717510010921},        {'close':14690,'date':42289,'markup':0.0433238636363636},        {'close':14565,'date':42290,'markup':-0.000343170899107756},        {'close':14455,'date':42291,'markup':-0.0020711080428029},        {'close':14530,'date':42292,'markup':0.00241462573301138},        {'close':14395,'date':42293,'markup':-0.0113324175824176},        {'close':14255,'date':42296,'markup':-0.0158784949948222},        {'close':14230,'date':42297,'markup':-0.0093978419770275},        {'close':14225,'date':42298,'markup':0.00105559465165377},        {'close':14020,'date':42299,'markup':-0.0164854437039635},        {'close':14195,'date':42300,'markup':0.0150160886664283},        {'close':14170,'date':42303,'markup':0.00283085633404105},        {'close':14225,'date':42304,'markup':0.00672328379334749},        {'close':14105,'date':42305,'markup':-0.00423579244617014},        {'close':14130,'date':42306,'markup':-0.00141342756183746},        {'close':13730,'date':42307,'markup':-0.0283085633404105},        {'close':13765,'date':42310,'markup':-0.00649584987369181},        {'close':13695,'date':42311,'markup':-0.00182215743440233},        {'close':13780,'date':42312,'markup':0.00327630141973062},        {'close':13530,'date':42313,'markup':-0.00987925356750823},        {'close':13560,'date':42314,'markup':-0.00840950639853748},        {'close':13525,'date':42317,'markup':0.00259451445515196},        {'close':13225,'date':42318,'markup':-0.0218195266272189},        {'close':12800,'date':42319,'markup':-0.0350546551074256},        {'close':13030,'date':42320,'markup':0.00773395204949729},        {'close':12955,'date':42321,'markup':0.00193348801237432},        {'close':12900,'date':42324,'markup':-0.00501349787890474},        {'close':12615,'date':42325,'markup':-0.0303612605687932},        {'close':12450,'date':42326,'markup':-0.0181388012618297},        {'close':12040,'date':42327,'markup':-0.0368},        {'close':12525,'date':42328,'markup':0.0274815422477441},        {'close':12355,'date':42331,'markup':0.014367816091954},        {'close':12825,'date':42332,'markup':0.0342741935483871},        {'close':12815,'date':42333,'markup':0.0256102440976391},        {'close':13130,'date':42334,'markup':0.0213924542979385},        {'close':12960,'date':42335,'markup':-0.00537221795855718},        {'close':12800,'date':42338,'markup':-0.0187811422000767},        {'close':12745,'date':42339,'markup':-0.00312866640594447},        {'close':12550,'date':42340,'markup':-0.0172278778386844},        {'close':12460,'date':42341,'markup':-0.0200550530869052},        {'close':12590,'date':42342,'markup':0.00318725099601594},        {'close':12830,'date':42345,'markup':0.0239425379090184},        {'close':12540,'date':42346,'markup':-0.00908731726590281},        {'close':12650,'date':42347,'markup':0},        {'close':12565,'date':42348,'markup':0.000398089171974522},        {'close':12900,'date':42349,'markup':0.0173501577287066},        {'close':12900,'date':42352,'markup':0.016548463356974},        {'close':12725,'date':42353,'markup':-0.00934215648112106},        {'close':12630,'date':42354,'markup':-0.0152046783625731},        {'close':12550,'date':42355,'markup':-0.00986193293885602},        {'close':12645,'date':42356,'markup':0.000791452314998021},        {'close':12865,'date':42359,'markup':0.0246913580246914},        {'close':12815,'date':42360,'markup':0.00707269155206287},        {'close':12905,'date':42361,'markup':0.00428015564202335},        {'close':12985,'date':42362,'markup':0.0124756335282651},        {'close':13140,'date':42363,'markup':0.00999231360491929},        {'close':12930,'date':42366,'markup':-0.0110898661567878},        {'close':13140,'date':42367,'markup':0.00574052812858783},        {'close':13385,'date':42368,'markup':0.0300115429011158},        {'close':13440,'date':42369,'markup':0.00674157303370787},        {'close':13165,'date':42373,'markup':-0.0197319434102755},        {'close':13335,'date':42374,'markup':0.00717522658610272},        {'close':13070,'date':42375,'markup':-0.0124669437098602},        {'close':12885,'date':42376,'markup':-0.0194063926940639},        {'close':12885,'date':42377,'markup':-0.00808314087759815},        {'close':12840,'date':42380,'markup':0},        {'close':12375,'date':42381,'markup':-0.0388349514563107},        {'close':12490,'date':42382,'markup':-0.0106930693069307},        {'close':12620,'date':42383,'markup':0.0124348174889691},        {'close':12530,'date':42384,'markup':-0.00199123855037834},        {'close':12690,'date':42387,'markup':0.0019739439399921},        {'close':12830,'date':42388,'markup':0.0154333201424614},        {'close':12720,'date':42389,'markup':-0.00235294117647059},        {'close':12625,'date':42390,'markup':-0.0121283255086072},        {'close':12785,'date':42391,'markup':0.00788332676389436},        {'close':12760,'date':42394,'markup':0.000392003136025088},        {'close':12795,'date':42395,'markup':0.00156555772994129},        {'close':13095,'date':42396,'markup':0.0250489236790607},        {'close':12980,'date':42397,'markup':-0.00345489443378119},        {'close':13080,'date':42398,'markup':0.00345224395857307},        {'close':13140,'date':42401,'markup':0.012326656394453},        {'close':13340,'date':42402,'markup':0.0175438596491228},        {'close':13490,'date':42403,'markup':0.0173453996983409},        {'close':13945,'date':42404,'markup':0.0410600970511385},        {'close':13835,'date':42405,'markup':0.00581606688476917},        {'close':13815,'date':42415,'markup':-0.00216684723726977},        {'close':13660,'date':42416,'markup':-0.0144300144300144},        {'close':13555,'date':42417,'markup':-0.011666059059424},        {'close':13615,'date':42418,'markup':0.000735023888276369},        {'close':13915,'date':42419,'markup':0.0239146431199411},        {'close':14220,'date':42422,'markup':0.0311820159535896},        {'close':14140,'date':42423,'markup':0.00212615166548547},        {'close':13955,'date':42424,'markup':-0.0162143108917871},        {'close':14070,'date':42425,'markup':0.005},        {'close':13945,'date':42426,'markup':-0.015183615819209},        {'close':14050,'date':42429,'markup':0.00608664518438955},        {'close':14100,'date':42430,'markup':0.00177619893428064},        {'close':14370,'date':42431,'markup':0.0213219616204691},        {'close':14420,'date':42432,'markup':0.00945047252362618},        {'close':14480,'date':42433,'markup':0.00590482806530045},        {'close':14420,'date':42436,'markup':-0.00586004825922096},        {'close':14290,'date':42437,'markup':-0.0168558651530788},        {'close':14090,'date':42438,'markup':-0.0184604667363288},        {'close':14065,'date':42439,'markup':0.000355618776671408},        {'close':14160,'date':42440,'markup':0.000706713780918728},        {'close':14180,'date':42443,'markup':0.00746003552397869},        {'close':14060,'date':42444,'markup':-0.0105559465165376},        {'close':13970,'date':42445,'markup':-0.010272759475735},        {'close':14170,'date':42446,'markup':0.0172290021536253},        {'close':14405,'date':42447,'markup':0.0245376955903272},        {'close':14400,'date':42450,'markup':0.00139082058414465},        {'close':14440,'date':42451,'markup':0.0013869625520111},        {'close':14385,'date':42452,'markup':-0.00656077348066298},        {'close':14200,'date':42453,'markup':-0.0155979202772964},        {'close':14250,'date':42454,'markup':-0.000350754121360926},        {'close':14205,'date':42457,'markup':0.00247000705716302},        {'close':14180,'date':42458,'markup':-0.00700280112044818},        {'close':14140,'date':42459,'markup':-0.00911002102312544},        {'close':14140,'date':42460,'markup':-0.00246913580246914},        {'close':14445,'date':42461,'markup':0.0194071983062809},        {'close':14460,'date':42465,'markup':0.00801673056814221},        {'close':14240,'date':42466,'markup':-0.0162348877374784},        {'close':14185,'date':42467,'markup':-0.0101186322400558},        {'close':13955,'date':42468,'markup':-0.0200140449438202},        {'close':14055,'date':42471,'markup':0.00536480686695279},        {'close':14115,'date':42472,'markup':0.00141894288754878},        {'close':14775,'date':42473,'markup':0.0497335701598579},        {'close':14865,'date':42474,'markup':0.0181506849315068},        {'close':14925,'date':42475,'markup':-0.00367156208277704},        {'close':14990,'date':42478,'markup':0.00637797918764686},        {'close':15140,'date':42479,'markup':0.00497842681712579},        {'close':15130,'date':42480,'markup':0.00132362673726009},        {'close':15325,'date':42481,'markup':0.0108839050131926},        {'close':15050,'date':42482,'markup':-0.0108445612882024},        {'close':15120,'date':42485,'markup':0.00498504486540379},        {'close':14790,'date':42486,'markup':-0.0247279920870425},        {'close':14925,'date':42487,'markup':-0.0030060120240481},        {'close':14900,'date':42488,'markup':-0.00234348844994978},        {'close':15290,'date':42489,'markup':0.0282447881640888},        {'close':15345,'date':42493,'markup':0.0138751238850347},        {'close':14925,'date':42494,'markup':-0.0219528178243775},        {'close':14900,'date':42495,'markup':-0.0109525389976767},        {'close':14865,'date':42496,'markup':-0.00734557595993322},        {'close':14745,'date':42499,'markup':-0.00539629005059022},        {'close':14715,'date':42500,'markup':-0.0107563025210084},        {'close':14905,'date':42501,'markup':0.0177534994878798},        {'close':15180,'date':42502,'markup':0.0267162664863037},        {'close':15020,'date':42503,'markup':-0.00562727573651109},        {'close':15105,'date':42506,'markup':0.00868113522537563},        {'close':15190,'date':42507,'markup':0.0079628400796284},        {'close':15005,'date':42508,'markup':-0.00793388429752066},        {'close':14945,'date':42509,'markup':-0.0102649006622517},        {'close':15010,'date':42510,'markup':0.000333222259246918},        {'close':14825,'date':42513,'markup':-0.00636729222520107},        {'close':14465,'date':42514,'markup':-0.0304959785522788},        {'close':14525,'date':42515,'markup':-0.00819392284055992},        {'close':14920,'date':42516,'markup':0.0236706689536878},        {'close':15005,'date':42517,'markup':0.0197077811756711},        {'close':15045,'date':42520,'markup':0.00736524941412789},        {'close':15095,'date':42521,'markup':0.00532800532800533},        {'close':14970,'date':42522,'markup':-0.00465425531914894},        {'close':15580,'date':42523,'markup':0.0341851974775971},        {'close':15590,'date':42524,'markup':0.00938815150534154},        {'close':15750,'date':42527,'markup':0.015146632291331},        {'close':15755,'date':42528,'markup':0.000952986022871665},        {'close':15625,'date':42529,'markup':-0.00825134877816566},        {'close':15860,'date':42534,'markup':0.0186255619781631},        {'close':15705,'date':42535,'markup':-0.011953444479396},        {'close':15725,'date':42536,'markup':-0.00726010101010101},        {'close':15595,'date':42537,'markup':-0.0028772378516624},        {'close':15645,'date':42538,'markup':-0.00286806883365201},        {'close':15590,'date':42541,'markup':0.00386349001931745},        {'close':15655,'date':42542,'markup':0.00610539845758355},        {'close':15770,'date':42543,'markup':0.00477859190825104},        {'close':15790,'date':42544,'markup':0.00605288308378464},        {'close':15495,'date':42545,'markup':-0.0171265461465271},        {'close':15685,'date':42548,'markup':0.00319795330988168},        {'close':15900,'date':42549,'markup':0.017274472168906},        {'close':16210,'date':42550,'markup':0.0301874801398157},        {'close':16450,'date':42551,'markup':0.0182606004333024},        {'close':16545,'date':42552,'markup':0.0109990834097159},        {'close':16755,'date':42555,'markup':0.0188507145028884},        {'close':16450,'date':42556,'markup':-0.0193740685543964},        {'close':16420,'date':42557,'markup':-0.00514995455922448},        {'close':16395,'date':42558,'markup':-0.00213024954351795},        {'close':16465,'date':42559,'markup':0.00274056029232643},        {'close':16805,'date':42562,'markup':0.025320317266626},        {'close':16770,'date':42563,'markup':0.0078125},        {'close':16905,'date':42564,'markup':0.00985663082437276},        {'close':16990,'date':42565,'markup':-0.00205580029368576},        {'close':17055,'date':42566,'markup':0.00917159763313609},        {'close':16940,'date':42569,'markup':-0.00176782557454331},        {'close':17290,'date':42570,'markup':0.0143737166324435},        {'close':17205,'date':42571,'markup':0.00262237762237762},        {'close':17380,'date':42572,'markup':0.00958466453674121},        {'close':17285,'date':42573,'markup':0.00523407967432393},        {'close':17425,'date':42576,'markup':0.00172463351537798},        {'close':17165,'date':42577,'markup':-0.00809014735625542},        {'close':17015,'date':42578,'markup':-0.0141946697566628},        {'close':16880,'date':42579,'markup':-0.0117096018735363},        {'close':16930,'date':42580,'markup':0.00415183867141162},        {'close':17430,'date':42583,'markup':0.0249926492208174},        {'close':17440,'date':42584,'markup':0.0127758420441347},        {'close':17320,'date':42585,'markup':-0.00345224395857307},        {'close':17310,'date':42586,'markup':-0.00688468158347676},        {'close':17435,'date':42587,'markup':0.00605885747259088},        {'close':17535,'date':42590,'markup':0.010371650821089},        {'close':17325,'date':42591,'markup':-0.00545350172215844},        {'close':17790,'date':42592,'markup':0.0206540447504303},        {'close':17655,'date':42593,'markup':0.00770547945205479},        {'close':17495,'date':42594,'markup':-0.0118610561988139},        {'close':17115,'date':42597,'markup':-0.0250640843064654},        {'close':17335,'date':42598,'markup':0.00347322720694645},        {'close':17250,'date':42599,'markup':-0.00346620450606586},        {'close':17550,'date':42600,'markup':0.015625},        {'close':17505,'date':42601,'markup':0.00372706422018349},        {'close':17385,'date':42604,'markup':-0.00628751071734781},        {'close':17565,'date':42605,'markup':0.00486270022883295},        {'close':17595,'date':42606,'markup':0.00342172797262618},        {'close':17505,'date':42607,'markup':-0.00483229107447413},        {'close':17940,'date':42608,'markup':0.0274914089347079},        {'close':17965,'date':42611,'markup':0.00813692480359147},        {'close':17865,'date':42612,'markup':-0.0055663790704147},        {'close':17955,'date':42613,'markup':0.00391389432485323},        {'close':18345,'date':42614,'markup':0.0183180682764363},        {'close':18515,'date':42615,'markup':0.0189873417721519},        {'close':18400,'date':42618,'markup':-0.000543183052688756},        {'close':18285,'date':42619,'markup':-0.0084056399132321},        {'close':18235,'date':42620,'markup':-0.00409612233752048},        {'close':18045,'date':42621,'markup':-0.00878879428728371},        {'close':18155,'date':42622,'markup':0.000826901874310915},        {'close':17720,'date':42625,'markup':-0.0207239568941697},        {'close':17770,'date':42626,'markup':-0.00615212527964206},        {'close':17570,'date':42627,'markup':-0.0112549240292628},        {'close':17525,'date':42632,'markup':-0.00539160045402951},        {'close':17915,'date':42633,'markup':0.0219623502567028},        {'close':17935,'date':42634,'markup':0.00645342312008979},        {'close':17910,'date':42635,'markup':-0.00527631213551791},        {'close':17950,'date':42636,'markup':0.00279329608938547},        {'close':17660,'date':42639,'markup':-0.0161559888579387},        {'close':18020,'date':42640,'markup':0.0172170476996895},        {'close':18040,'date':42641,'markup':0.0112107623318386},        {'close':18180,'date':42642,'markup':0.00887902330743618},        {'close':18255,'date':42643,'markup':0.00412541254125413},        {'close':18390,'date':42653,'markup':0.00905349794238683},        {'close':18170,'date':42654,'markup':-0.00656096227446692},        {'close':17790,'date':42655,'markup':-0.0233324183365358},        {'close':17750,'date':42656,'markup':-0.00420757363253857},        {'close':17825,'date':42657,'markup':-0.000560695262125035},        {'close':17990,'date':42660,'markup':0.0143783478996335},        {'close':18210,'date':42661,'markup':0.0147673446642519},        {'close':18160,'date':42662,'markup':0.00553709856035437},        {'close':18275,'date':42663,'markup':0.00522552255225523},        {'close':18200,'date':42664,'markup':-0.00109769484083425},        {'close':18175,'date':42667,'markup':-0.0016478989288657},        {'close':19010,'date':42668,'markup':0.0479603087100331},        {'close':18885,'date':42669,'markup':0.00908362276248998},        {'close':18875,'date':42670,'markup':-0.00052952078369076},        {'close':19095,'date':42671,'markup':0.0140732873074881},        {'close':19320,'date':42674,'markup':0.0163072067332983},        {'close':19755,'date':42675,'markup':0.0281030444964871},        {'close':19380,'date':42676,'markup':-0.0192307692307692},        {'close':19640,'date':42677,'markup':0.00460358056265985},        {'close':19760,'date':42678,'markup':0.0151554071410223},        {'close':20070,'date':42681,'markup':0.0136363636363636},        {'close':19865,'date':42682,'markup':0.000755667506297229},        {'close':19840,'date':42683,'markup':-0.00576296667501879},        {'close':20845,'date':42684,'markup':0.04225},        {'close':20910,'date':42685,'markup':0.0234948604992658},        {'close':21275,'date':42688,'markup':0.0267857142857143},        {'close':21115,'date':42689,'markup':0.0127098321342926},        {'close':21255,'date':42690,'markup':-0.0100139729855612},        {'close':20570,'date':42691,'markup':-0.0360824742268041},        {'close':20890,'date':42692,'markup':0.0045684058667949},        {'close':21365,'date':42695,'markup':0.0328740633309161},        {'close':21800,'date':42696,'markup':0.0326859308384652},        {'close':21590,'date':42697,'markup':0.00301974448315912},        {'close':22570,'date':42698,'markup':0.0458758109360519},        {'close':23045,'date':42699,'markup':0.0354976409795552},        {'close':24410,'date':42702,'markup':0.0699101468332238},        {'close':23780,'date':42703,'markup':0.00358725469508335},        {'close':22590,'date':42704,'markup':-0.0682614972159208},        {'close':22940,'date':42705,'markup':-0.00585048754062839},        {'close':22350,'date':42706,'markup':-0.0210249671484888},        {'close':22710,'date':42709,'markup':0.00287039081474939},        {'close':22905,'date':42710,'markup':0.0189056939501779},        {'close':23310,'date':42711,'markup':0.0112798264642082},        {'close':22850,'date':42712,'markup':-0.0144489971964632},        {'close':22615,'date':42713,'markup':-0.0218425605536332},        {'close':22370,'date':42716,'markup':-0.00621945801865837},        {'close':22600,'date':42717,'markup':-0.00308778120864579},        {'close':22485,'date':42718,'markup':-0.000222321031569586},        {'close':22930,'date':42719,'markup':0.0232039268183847},        {'close':22615,'date':42720,'markup':-0.00505939287285526},        {'close':21550,'date':42723,'markup':-0.0525390195647395},        {'close':20990,'date':42724,'markup':-0.0542915070961928},        {'close':21320,'date':42725,'markup':0.00994789199431549},        {'close':20830,'date':42726,'markup':-0.0218361117633247},        {'close':21260,'date':42727,'markup':0.00877817319098458},        {'close':19805,'date':42730,'markup':-0.0638147010163082},        {'close':20265,'date':42731,'markup':-0.00539877300613497},        {'close':20650,'date':42732,'markup':0.0332749562171629},        {'close':21095,'date':42733,'markup':0.0185900531144375},        {'close':21045,'date':42734,'markup':0.00142755174875089},        {'close':21045,'date':42738,'markup':0.00717875089734386},        {'close':21180,'date':42739,'markup':0.0021291696238467},        {'close':21355,'date':42740,'markup':0.0181168057210965},        {'close':21215,'date':42741,'markup':-0.0100326644890341},        {'close':21775,'date':42744,'markup':0.0187134502923977},        {'close':22555,'date':42745,'markup':0.0507803400885162},        {'close':22485,'date':42746,'markup':0.0160415725259828},        {'close':22430,'date':42747,'markup':-0.00576241134751773},        {'close':22405,'date':42748,'markup':-0.00111457868925546},        {'close':22770,'date':42751,'markup':0.0108768035516093},        {'close':22050,'date':42752,'markup':-0.0341655716162943},        {'close':22395,'date':42753,'markup':0.00111756817165847},        {'close':22300,'date':42754,'markup':-0.00134348410210479},        {'close':22145,'date':42755,'markup':-0.0113839285714286},        {'close':22815,'date':42758,'markup':0.0205770521136211},        {'close':22760,'date':42759,'markup':0.00596685082872928},        {'close':22830,'date':42760,'markup':0.00417857928304377},        {'close':23205,'date':42761,'markup':0.0148698884758364},        {'close':22645,'date':42769,'markup':-0.00940507436570429},        {'close':22420,'date':42772,'markup':-0.01623519087319},        {'close':22675,'date':42773,'markup':0.00265310634534601},        {'close':22945,'date':42774,'markup':0.0148164528969483},        {'close':22980,'date':42775,'markup':0.00349344978165939},        {'close':23415,'date':42776,'markup':0.0147345612134345},        {'close':24000,'date':42779,'markup':0.0338143441740254},        {'close':23890,'date':42780,'markup':-0.0033375052148519},        {'close':23655,'date':42781,'markup':-0.00942211055276382},        {'close':23340,'date':42782,'markup':-0.0116451408003388},        {'close':23280,'date':42783,'markup':-0.0120942075111394},        {'close':23005,'date':42786,'markup':-0.0143530419880034},        {'close':23440,'date':42787,'markup':0.0229107571459743},        {'close':23170,'date':42788,'markup':-0.0113078728397696},        {'close':22985,'date':42789,'markup':-0.0128838307923556},        {'close':22925,'date':42790,'markup':-0.0120663650075415},        {'close':22780,'date':42793,'markup':0.00021953896816685},        {'close':22860,'date':42794,'markup':-0.00131061598951507},        {'close':23290,'date':42795,'markup':0.0181420765027322},        {'close':23270,'date':42796,'markup':0.00998263888888889},        {'close':22880,'date':42797,'markup':-0.0186575166202016},        {'close':22295,'date':42800,'markup':-0.0230061349693252},        {'close':22240,'date':42801,'markup':-0.0176678445229682},        {'close':22000,'date':42802,'markup':-0.0127888714381871},        {'close':21610,'date':42803,'markup':-0.0177272727272727},        {'close':21950,'date':42804,'markup':0.00595783684692942},        {'close':22550,'date':42807,'markup':0.0329821346770499},        {'close':22555,'date':42808,'markup':0.0134801168276792},        {'close':22770,'date':42809,'markup':0.011325782811459},        {'close':23360,'date':42810,'markup':0.0361499223774673},        {'close':23365,'date':42811,'markup':0.0101599654128837},        {'close':23780,'date':42814,'markup':0.0210390725633319},        {'close':23445,'date':42815,'markup':-0.0103419164204306},        {'close':23255,'date':42816,'markup':-0.0142009325985587},        {'close':23415,'date':42817,'markup':0.00385852090032154},        {'close':23305,'date':42818,'markup':-0.00256794350524288},        {'close':22665,'date':42821,'markup':-0.0205272255834054},        {'close':22570,'date':42822,'markup':-0.021036651485578},        {'close':23380,'date':42823,'markup':0.0354295837023915},        {'close':23425,'date':42824,'markup':0.0189212701174424},        {'close':23380,'date':42825,'markup':-0.00213401621852326},        {'close':23115,'date':42830,'markup':-0.0142857142857143},        {'close':23090,'date':42831,'markup':0.000216590859865714},        {'close':22150,'date':42832,'markup':-0.0398786302557434},        {'close':22035,'date':42835,'markup':-0.0237040319007532},        {'close':21325,'date':42836,'markup':-0.0348495134645847},        {'close':21275,'date':42837,'markup':-0.016412390198798},        {'close':21725,'date':42838,'markup':0.0194744251525106},        {'close':21425,'date':42839,'markup':-0.00372006510113927},        {'close':21860,'date':42842,'markup':0.0136795733827962},        {'close':21400,'date':42843,'markup':-0.0203707942320897},        {'close':21025,'date':42844,'markup':-0.0268456375838926},        {'close':21660,'date':42845,'markup':0.0333969465648855},        {'close':21860,'date':42846,'markup':0.0316186880604059},        {'close':21525,'date':42849,'markup':-0.0121615419917393},        {'close':21555,'date':42850,'markup':0.00185916802231002},        {'close':21645,'date':42851,'markup':0.00744705608564114},        {'close':21750,'date':42852,'markup':0.00717758740449178},        {'close':21900,'date':42853,'markup':0.00805523590333717},        {'close':22230,'date':42857,'markup':0.0244239631336406},        {'close':21895,'date':42858,'markup':-0.0183815288052006},        {'close':21380,'date':42859,'markup':-0.0292849035187287},        {'close':21305,'date':42860,'markup':-0.0104505341384115},        {'close':21230,'date':42863,'markup':-0.0109480549732122},        {'close':21655,'date':42864,'markup':0.0204995287464656},        {'close':21690,'date':42865,'markup':0.0109531577720811},        {'close':21945,'date':42866,'markup':0.0112903225806452},        {'close':21610,'date':42867,'markup':-0.00391795344549435},        {'close':21600,'date':42870,'markup':-0.000693962526023595},        {'close':21310,'date':42871,'markup':-0.00860665270993254},        {'close':21520,'date':42872,'markup':0.00678362573099415},        {'close':21330,'date':42873,'markup':-0.00605778191985089},        {'close':21480,'date':42874,'markup':0.00163208207041268}    ]};var cu1701_data = {    'code':'cu1701.shf',    'total':811,    'data':    [        {'close':51800,'date':41659,'markup':-0.00403768506056528},        {'close':51630,'date':41660,'markup':-0.0038587690526722},        {'close':51630,'date':41661,'markup':-0.000387221684414327},        {'close':51410,'date':41662,'markup':-0.00483933410762679},        {'close':51270,'date':41663,'markup':-0.00349854227405248},        {'close':50980,'date':41666,'markup':-0.00585023400936037},        {'close':51000,'date':41667,'markup':-0.000587889476778366},        {'close':51060,'date':41668,'markup':0.00196232339089482},        {'close':50950,'date':41669,'markup':-0.000980392156862745},        {'close':51030,'date':41677,'markup':0.00294811320754717},        {'close':51070,'date':41680,'markup':0.00137254901960784},        {'close':50390,'date':41681,'markup':-0.0115731659474304},        {'close':50650,'date':41682,'markup':0.00138394622380388},        {'close':50620,'date':41683,'markup':0.00178112012665743},        {'close':50670,'date':41684,'markup':0.000394866732477789},        {'close':51070,'date':41687,'markup':0.00928853754940711},        {'close':50700,'date':41688,'markup':-0.00588235294117647},        {'close':50740,'date':41689,'markup':-0.00216322517207473},        {'close':50390,'date':41690,'markup':-0.00865630533149715},        {'close':50510,'date':41691,'markup':-0.000988924050632911},        {'close':49900,'date':41694,'markup':-0.0120768164719857},        {'close':49520,'date':41695,'markup':-0.00801282051282051},        {'close':49680,'date':41696,'markup':-0.00220927897168106},        {'close':49210,'date':41697,'markup':-0.00706214689265537},        {'close':49280,'date':41698,'markup':-0.00121605188488042},        {'close':48760,'date':41701,'markup':-0.00914448282869335},        {'close':48990,'date':41702,'markup':0.000408413314274045},        {'close':49380,'date':41703,'markup':0.0116779348494161},        {'close':49140,'date':41704,'markup':-0.00344757655647942},        {'close':48920,'date':41705,'markup':-0.00548892051229925},        {'close':46670,'date':41708,'markup':-0.0500712395684918},        {'close':46250,'date':41709,'markup':-0.0213711383834109},        {'close':44500,'date':41710,'markup':-0.0336590662323561},        {'close':44410,'date':41711,'markup':-0.00537513997760358},        {'close':44290,'date':41712,'markup':-0.00672796591163938},        {'close':44170,'date':41715,'markup':-0.00405862457722661},        {'close':44900,'date':41716,'markup':0.00763016157989228},        {'close':44740,'date':41717,'markup':-0.00133928571428571},        {'close':45190,'date':41718,'markup':0.00983240223463687},        {'close':45170,'date':41719,'markup':0.0057893564907593},        {'close':45420,'date':41722,'markup':0.00598006644518272},        {'close':45890,'date':41723,'markup':0.0141436464088398},        {'close':46140,'date':41724,'markup':0.0113985094256905},        {'close':45730,'date':41725,'markup':-0.00888599913307326},        {'close':46450,'date':41726,'markup':0.0102218355806873},        {'close':46790,'date':41729,'markup':0.0134286333116742},        {'close':46740,'date':41730,'markup':-0.000855066267635742},        {'close':46650,'date':41731,'markup':-0.00149828767123288},        {'close':46330,'date':41732,'markup':-0.00813530293299079},        {'close':46690,'date':41733,'markup':0.00603318250377074},        {'close':46730,'date':41737,'markup':0.00494623655913979},        {'close':46380,'date':41738,'markup':-0.00748983522362508},        {'close':46200,'date':41739,'markup':-0.00922153120308814},        {'close':46740,'date':41740,'markup':0.011250540891389},        {'close':46780,'date':41743,'markup':0.00645438898450947},        {'close':46560,'date':41744,'markup':-0.00278432212465196},        {'close':46180,'date':41745,'markup':-0.00922548809268397},        {'close':46540,'date':41746,'markup':0.0102018667245496},        {'close':46360,'date':41747,'markup':-0.00450934077732446},        {'close':46620,'date':41750,'markup':0.00365984930032293},        {'close':46430,'date':41751,'markup':-0.00150537634408602},        {'close':46790,'date':41752,'markup':0.00645300064530006},        {'close':47250,'date':41753,'markup':0.0132961612695689},        {'close':47920,'date':41754,'markup':0.020442930153322},        {'close':47970,'date':41757,'markup':0.00713835817761915},        {'close':47640,'date':41758,'markup':-0.00584307178631052},        {'close':47650,'date':41759,'markup':-0.00334658021334449},        {'close':47670,'date':41764,'markup':0.00126023944549464},        {'close':47560,'date':41765,'markup':-0.00314399496960805},        {'close':47280,'date':41766,'markup':-0.00546907867059318},        {'close':47210,'date':41767,'markup':-0.00526759376316898},        {'close':47740,'date':41768,'markup':0.0142341193966433},        {'close':48010,'date':41771,'markup':0.0113756056456709},        {'close':48170,'date':41772,'markup':0.0119747899159664},        {'close':48500,'date':41773,'markup':0.00476486430495132},        {'close':48670,'date':41774,'markup':0.00996057273293214},        {'close':48210,'date':41775,'markup':-0.00638911788953009},        {'close':48950,'date':41778,'markup':0.0117817279867714},        {'close':48810,'date':41779,'markup':0.00390785684903332},        {'close':48020,'date':41780,'markup':-0.0163867267513314},        {'close':48260,'date':41781,'markup':-0.00227413686169113},        {'close':48700,'date':41782,'markup':0.0112126245847176},        {'close':49130,'date':41785,'markup':0.0142444260941371},        {'close':48840,'date':41786,'markup':-0.00183936235438381},        {'close':48930,'date':41787,'markup':-0.000408580183861083},        {'close':48470,'date':41788,'markup':-0.00757575757575758},        {'close':48640,'date':41789,'markup':-0.00164203612479475},        {'close':48690,'date':41793,'markup':0.00474618241848948},        {'close':48120,'date':41794,'markup':-0.0113005958495993},        {'close':48320,'date':41795,'markup':0.00207382828701784},        {'close':48260,'date':41796,'markup':0.00416146483562214},        {'close':47370,'date':41799,'markup':-0.0174237710018668},        {'close':47480,'date':41800,'markup':-0.00419463087248322},        {'close':47860,'date':41801,'markup':0.00715488215488216},        {'close':47460,'date':41802,'markup':-0.00461409395973154},        {'close':47730,'date':41803,'markup':0.00209951711106446},        {'close':48030,'date':41806,'markup':0.0100946372239748},        {'close':48190,'date':41807,'markup':0.0054245775088671},        {'close':48130,'date':41808,'markup':-0.00020772746157042},        {'close':48060,'date':41809,'markup':-0.00228357899107328},        {'close':48760,'date':41810,'markup':0.0141430948419301},        {'close':49550,'date':41813,'markup':0.0224927775484936},        {'close':49400,'date':41814,'markup':0.00243506493506494},        {'close':49440,'date':41815,'markup':-0.000202224469160768},        {'close':49590,'date':41816,'markup':0.00465964343598055},        {'close':49520,'date':41817,'markup':0.00222626998583283},        {'close':49580,'date':41820,'markup':0.00100948919846558},        {'close':50380,'date':41821,'markup':0.0171613163739148},        {'close':50320,'date':41822,'markup':0.0037901456213844},        {'close':51100,'date':41823,'markup':0.0173203264981087},        {'close':51380,'date':41824,'markup':0.00903377847604085},        {'close':50850,'date':41827,'markup':-0.00954421503700818},        {'close':51180,'date':41828,'markup':0.00333267986669281},        {'close':50930,'date':41829,'markup':-0.000784775358053757},        {'close':50570,'date':41830,'markup':-0.0080423695566889},        {'close':50910,'date':41831,'markup':0.00513326752221125},        {'close':50670,'date':41834,'markup':-0.00196966712625566},        {'close':50640,'date':41835,'markup':-0.00354191263282172},        {'close':50440,'date':41836,'markup':-0.00118811881188119},        {'close':49920,'date':41837,'markup':-0.0124629080118694},        {'close':49740,'date':41838,'markup':-0.00777977259126272},        {'close':49550,'date':41841,'markup':-0.00741185897435897},        {'close':49890,'date':41842,'markup':0.00951031970861999},        {'close':50010,'date':41843,'markup':0.00341091492776886},        {'close':50650,'date':41844,'markup':0.0150300601202405},        {'close':51040,'date':41845,'markup':0.0149135016901969},        {'close':50630,'date':41848,'markup':-0.00373868555686737},        {'close':50790,'date':41849,'markup':0.00494657696873763},        {'close':50290,'date':41850,'markup':-0.00828239006113193},        {'close':50510,'date':41851,'markup':0.00357639578780052},        {'close':50530,'date':41852,'markup':0.00158572844400396},        {'close':50220,'date':41855,'markup':-0.00416418798334325},        {'close':50570,'date':41856,'markup':0.00576770087509944},        {'close':49720,'date':41857,'markup':-0.0162247724574594},        {'close':49750,'date':41858,'markup':-0.005},        {'close':49710,'date':41859,'markup':-0.000201126307320998},        {'close':49890,'date':41862,'markup':0.00200843542880096},        {'close':49790,'date':41863,'markup':-0.00280392549569397},        {'close':49300,'date':41864,'markup':-0.00864669213754273},        {'close':48920,'date':41865,'markup':-0.0119167844879822},        {'close':48910,'date':41866,'markup':-0.00244748113399959},        {'close':48970,'date':41869,'markup':0.0028670899037477},        {'close':49390,'date':41870,'markup':0.00795918367346939},        {'close':49530,'date':41871,'markup':0.00711671411142741},        {'close':50230,'date':41872,'markup':0.0201056051990252},        {'close':50760,'date':41873,'markup':0.0129714627818799},        {'close':50670,'date':41876,'markup':0.00237388724035608},        {'close':50610,'date':41877,'markup':-0.00236546422235364},        {'close':50300,'date':41878,'markup':-0.00632161201106282},        {'close':50250,'date':41879,'markup':-0.00376685170499603},        {'close':49780,'date':41880,'markup':-0.00935323383084577},        {'close':49440,'date':41883,'markup':-0.00623115577889447},        {'close':49630,'date':41884,'markup':-0.00241206030150754},        {'close':49680,'date':41885,'markup':0.0008058017727639},        {'close':49500,'date':41886,'markup':-0.0050251256281407},        {'close':49830,'date':41887,'markup':0.0068700747625783},        {'close':49340,'date':41891,'markup':-0.00863974281695801},        {'close':48870,'date':41892,'markup':-0.0139225181598063},        {'close':48190,'date':41893,'markup':-0.013914466953141},        {'close':48590,'date':41894,'markup':-0.00143855322646938},        {'close':48380,'date':41897,'markup':-0.000413223140495868},        {'close':48710,'date':41898,'markup':0.00869745288879685},        {'close':49480,'date':41899,'markup':0.0187358451719168},        {'close':49110,'date':41900,'markup':-0.00324741221838847},        {'close':48770,'date':41901,'markup':-0.00934389599837497},        {'close':47940,'date':41904,'markup':-0.0184275184275184},        {'close':48150,'date':41905,'markup':-0.00289915096293228},        {'close':47800,'date':41906,'markup':-0.00416666666666667},        {'close':47750,'date':41907,'markup':0.00146812080536913},        {'close':47890,'date':41908,'markup':0.00251203684320703},        {'close':47640,'date':41911,'markup':-0.00104843782763682},        {'close':48030,'date':41912,'markup':0.00818639798488665},        {'close':47690,'date':41920,'markup':-0.00728559533721898},        {'close':47780,'date':41921,'markup':-0.00292153589315526},        {'close':47240,'date':41922,'markup':-0.00693714525961741},        {'close':47850,'date':41925,'markup':0.00546333263290607},        {'close':48100,'date':41926,'markup':0.011354079058032},        {'close':48330,'date':41927,'markup':0.00897703549060543},        {'close':47430,'date':41928,'markup':-0.0180124223602484},        {'close':46750,'date':41929,'markup':-0.0201215678054915},        {'close':46680,'date':41932,'markup':-0.00744205826068467},        {'close':46530,'date':41933,'markup':-0.00491873396065013},        {'close':47070,'date':41934,'markup':0.00921955403087478},        {'close':47120,'date':41935,'markup':0.000212269157291446},        {'close':47390,'date':41936,'markup':0.00722635494155154},        {'close':47050,'date':41939,'markup':-0.00486463620981387},        {'close':47540,'date':41940,'markup':0.00741682559864378},        {'close':47770,'date':41941,'markup':0.00759333473950643},        {'close':47510,'date':41942,'markup':-0.00189075630252101},        {'close':47780,'date':41943,'markup':0.00104755918709407},        {'close':47300,'date':41946,'markup':-0.00295109612141653},        {'close':47700,'date':41947,'markup':0.00781745193323474},        {'close':46580,'date':41948,'markup':-0.0197811447811448},        {'close':46810,'date':41949,'markup':-0.00255699978691668},        {'close':47190,'date':41950,'markup':0.00790260572404955},        {'close':47510,'date':41953,'markup':0.010206251328939},        {'close':47150,'date':41954,'markup':-0.00506435956952944},        {'close':47320,'date':41955,'markup':0.001057753331923},        {'close':47400,'date':41956,'markup':0.00296233601354211},        {'close':47160,'date':41957,'markup':-0.00506329113924051},        {'close':47630,'date':41960,'markup':0.00996607294317218},        {'close':47610,'date':41961,'markup':0.00231578947368421},        {'close':47330,'date':41962,'markup':-0.00420786871449611},        {'close':47470,'date':41963,'markup':0.00465608465608466},        {'close':47580,'date':41964,'markup':0.00168421052631579},        {'close':47800,'date':41967,'markup':0.00716392751790982},        {'close':47820,'date':41968,'markup':-0.00291909924937448},        {'close':46590,'date':41969,'markup':-0.0230656322080101},        {'close':46720,'date':41970,'markup':-0.00298762270593257},        {'close':45990,'date':41971,'markup':-0.0143591941705958},        {'close':44540,'date':41974,'markup':-0.0361393637740749},        {'close':45400,'date':41975,'markup':0.0170250896057348},        {'close':45230,'date':41976,'markup':-0.00220604456210015},        {'close':45790,'date':41977,'markup':0.0105936879276098},        {'close':46090,'date':41978,'markup':0.0122995826927301},        {'close':45910,'date':41981,'markup':-0.00368923611111111},        {'close':45940,'date':41982,'markup':-0.00217202432667246},        {'close':46260,'date':41983,'markup':0.0111475409836066},        {'close':46210,'date':41984,'markup':-0.00064878892733564},        {'close':46380,'date':41985,'markup':0.00454840805717999},        {'close':46710,'date':41988,'markup':0.00754961173425367},        {'close':45880,'date':41989,'markup':-0.0141813493768801},        {'close':45640,'date':41990,'markup':-0.011265164644714},        {'close':45260,'date':41991,'markup':-0.00767375575531682},        {'close':45500,'date':41992,'markup':0.00775193798449612},        {'close':45960,'date':41995,'markup':0.013898080741231},        {'close':45630,'date':41996,'markup':-0.00284090909090909},        {'close':45630,'date':41997,'markup':-0.000657030223390276},        {'close':45630,'date':41998,'markup':0.00285714285714286},        {'close':45510,'date':41999,'markup':0.00021978021978022},        {'close':45030,'date':42002,'markup':-0.0101121125522093},        {'close':45290,'date':42003,'markup':0.0017695200176952},        {'close':45800,'date':42004,'markup':0.0130502101305021},        {'close':45080,'date':42009,'markup':-0.0118369136343709},        {'close':44800,'date':42010,'markup':-0.00994475138121547},        {'close':44650,'date':42011,'markup':0.00179492932465784},        {'close':44680,'date':42012,'markup':0.000447828034034931},        {'close':44250,'date':42013,'markup':-0.010952168082253},        {'close':43960,'date':42016,'markup':-0.0132435465768799},        {'close':42890,'date':42017,'markup':-0.0283189850475759},        {'close':41190,'date':42018,'markup':-0.0500461254612546},        {'close':40920,'date':42019,'markup':-0.0291814946619217},        {'close':41040,'date':42020,'markup':0.0128331688055281},        {'close':41770,'date':42023,'markup':0.0170440710981252},        {'close':41250,'date':42024,'markup':-0.0036231884057971},        {'close':41260,'date':42025,'markup':-0.0019351717464925},        {'close':41560,'date':42026,'markup':0.00580832526621491},        {'close':40750,'date':42027,'markup':-0.0204326923076923},        {'close':39250,'date':42030,'markup':-0.0405768760694207},        {'close':40260,'date':42031,'markup':0.0151285930408472},        {'close':39690,'date':42032,'markup':-0.0129321064411838},        {'close':39320,'date':42033,'markup':-0.00932224741748551},        {'close':39090,'date':42034,'markup':-0.0108805668016194},        {'close':40290,'date':42037,'markup':0.0275439938791125},        {'close':40760,'date':42038,'markup':0.0233492342455436},        {'close':41160,'date':42039,'markup':0.0178041543026706},        {'close':41000,'date':42040,'markup':-0.00630150266602036},        {'close':41670,'date':42041,'markup':0.0116533139111435},        {'close':41260,'date':42044,'markup':-0.00145208131655373},        {'close':41320,'date':42045,'markup':0.000242072137496974},        {'close':41100,'date':42046,'markup':-0.005324298160697},        {'close':41110,'date':42047,'markup':0.0017056530214425},        {'close':42120,'date':42048,'markup':0.0263157894736842},        {'close':42220,'date':42051,'markup':0.0117421519290678},        {'close':42200,'date':42052,'markup':0.00691958959675495},        {'close':41900,'date':42060,'markup':-0.00475059382422803},        {'close':42510,'date':42061,'markup':0.014074427480916},        {'close':42730,'date':42062,'markup':0.0127992415264281},        {'close':43200,'date':42065,'markup':0.0119465917076599},        {'close':42540,'date':42066,'markup':-0.00677095493812748},        {'close':42460,'date':42067,'markup':-0.00794392523364486},        {'close':42500,'date':42068,'markup':0.00235849056603774},        {'close':42200,'date':42069,'markup':-0.00518623290900519},        {'close':42300,'date':42072,'markup':-0.00212314225053079},        {'close':42230,'date':42073,'markup':0.00547619047619048},        {'close':42080,'date':42074,'markup':-0.0101152669960009},        {'close':42560,'date':42075,'markup':0.0109263657957245},        {'close':42840,'date':42076,'markup':0.0178189593727726},        {'close':42810,'date':42079,'markup':0.0028109627547435},        {'close':42430,'date':42080,'markup':-0.00445800093852651},        {'close':41620,'date':42081,'markup':-0.0241500586166471},        {'close':41720,'date':42082,'markup':-0.00949667616334283},        {'close':42040,'date':42083,'markup':0.0127680077089858},        {'close':43690,'date':42086,'markup':0.0370282459055305},        {'close':43850,'date':42087,'markup':0.0131700554528651},        {'close':43680,'date':42088,'markup':-0.00523798679116374},        {'close':43930,'date':42089,'markup':0.00595374398900847},        {'close':43770,'date':42090,'markup':-0.00114103149246919},        {'close':43830,'date':42093,'markup':-0.000911784818782767},        {'close':43350,'date':42094,'markup':-0.0061898211829436},        {'close':43260,'date':42095,'markup':-0.0116518163125428},        {'close':43520,'date':42096,'markup':0.00322729368372522},        {'close':43280,'date':42097,'markup':-0.00161476355247982},        {'close':43480,'date':42101,'markup':0.00346180475421186},        {'close':43460,'date':42102,'markup':0.000230149597238205},        {'close':43310,'date':42103,'markup':-0.00619550252409362},        {'close':43530,'date':42104,'markup':0.00577634011090573},        {'close':43680,'date':42107,'markup':0.00691562932226833},        {'close':42860,'date':42108,'markup':-0.0185482024272956},        {'close':43000,'date':42109,'markup':-0.00370713623725672},        {'close':43340,'date':42110,'markup':0.0104919561669387},        {'close':43690,'date':42111,'markup':0.0127491886879926},        {'close':43870,'date':42114,'markup':0.00274285714285714},        {'close':43370,'date':42115,'markup':-0.00981735159817352},        {'close':43310,'date':42116,'markup':-0.00115313653136531},        {'close':42990,'date':42117,'markup':-0.00601156069364162},        {'close':43310,'date':42118,'markup':0.005338904363974},        {'close':43730,'date':42121,'markup':0.0106309221169401},        {'close':43740,'date':42122,'markup':0.00160293107396382},        {'close':43730,'date':42123,'markup':-0.00273660205245154},        {'close':44240,'date':42124,'markup':0.00935432352270135},        {'close':45710,'date':42128,'markup':0.0372135239391877},        {'close':45730,'date':42129,'markup':0.00571805586100726},        {'close':46130,'date':42130,'markup':0.00940919037199125},        {'close':45860,'date':42131,'markup':-0.00499023649381645},        {'close':45970,'date':42132,'markup':0.00196163905841325},        {'close':45790,'date':42135,'markup':-0.00217912399215515},        {'close':45830,'date':42136,'markup':0.00109217999126256},        {'close':46260,'date':42137,'markup':0.0113686051595977},        {'close':46070,'date':42138,'markup':-0.000217013888888889},        {'close':46040,'date':42139,'markup':0.000869565217391304},        {'close':46110,'date':42142,'markup':0.00391900718484651},        {'close':45710,'date':42143,'markup':-0.00565586251903415},        {'close':44760,'date':42144,'markup':-0.022920759659463},        {'close':45120,'date':42145,'markup':0.00378197997775306},        {'close':45110,'date':42146,'markup':0.00289017341040462},        {'close':44710,'date':42149,'markup':-0.00996457041629761},        {'close':44520,'date':42150,'markup':-0.00246470983643289},        {'close':44300,'date':42151,'markup':-0.0127033652774682},        {'close':44250,'date':42152,'markup':0.00135777325186694},        {'close':44300,'date':42153,'markup':0.00385225470201677},        {'close':43650,'date':42156,'markup':-0.0115489130434783},        {'close':43690,'date':42157,'markup':-0.00273910066194933},        {'close':43530,'date':42158,'markup':-0.00183444164182527},        {'close':43400,'date':42159,'markup':-0.0077732053040695},        {'close':42810,'date':42160,'markup':-0.0156357783398482},        {'close':43160,'date':42163,'markup':0.00278810408921933},        {'close':43250,'date':42164,'markup':0.00394614670380687},        {'close':43370,'date':42165,'markup':0.00393518518518518},        {'close':43230,'date':42166,'markup':-0.00322803781415725},        {'close':42490,'date':42167,'markup':-0.0245638200183655},        {'close':42210,'date':42170,'markup':-0.011938202247191},        {'close':42150,'date':42171,'markup':-0.00870178739416745},        {'close':41810,'date':42172,'markup':-0.00853687455537112},        {'close':42080,'date':42173,'markup':0.00525561395126613},        {'close':41820,'date':42174,'markup':-0.00238549618320611},        {'close':41910,'date':42178,'markup':0.000238663484486874},        {'close':42190,'date':42179,'markup':0.00788342092689919},        {'close':41920,'date':42180,'markup':-0.0026171782060433},        {'close':42300,'date':42181,'markup':0.00786275911365261},        {'close':42500,'date':42184,'markup':0.0116638895501071},        {'close':42090,'date':42185,'markup':-0.00213371266002845},        {'close':41970,'date':42186,'markup':-0.00568585643212509},        {'close':42200,'date':42187,'markup':0.00595947556615018},        {'close':42380,'date':42188,'markup':0.00450343683337284},        {'close':40730,'date':42191,'markup':-0.0373434176317655},        {'close':39780,'date':42192,'markup':-0.0349344978165939},        {'close':38070,'date':42193,'markup':-0.0574399603862342},        {'close':40470,'date':42194,'markup':0.0498054474708171},        {'close':40360,'date':42195,'markup':0.00748876684972541},        {'close':40130,'date':42198,'markup':-0.0144891944990177},        {'close':40280,'date':42199,'markup':0.00248880039820806},        {'close':40750,'date':42200,'markup':0.00791491466732624},        {'close':40680,'date':42201,'markup':0.00543746910528917},        {'close':40480,'date':42202,'markup':0.00123670541676973},        {'close':39800,'date':42205,'markup':-0.0165554731900173},        {'close':40080,'date':42206,'markup':0.00350525788683025},        {'close':39150,'date':42207,'markup':-0.020760380190095},        {'close':39180,'date':42208,'markup':-0.0118537200504414},        {'close':38050,'date':42209,'markup':-0.0271030427000767},        {'close':37980,'date':42212,'markup':-0.0127371978164804},        {'close':38040,'date':42213,'markup':-0.00288335517693316},        {'close':38810,'date':42214,'markup':0.0253632760898283},        {'close':38560,'date':42215,'markup':-0.00541655919525406},        {'close':38250,'date':42216,'markup':-0.0111168562564633},        {'close':37870,'date':42219,'markup':-0.0132881709223554},        {'close':38190,'date':42220,'markup':-0.000261780104712042},        {'close':38120,'date':42221,'markup':0.00395048722675797},        {'close':38050,'date':42222,'markup':-0.002098085496984},        {'close':37970,'date':42223,'markup':-0.00131509731720147},        {'close':37990,'date':42226,'markup':0.00635761589403974},        {'close':39060,'date':42227,'markup':0.0319682959048877},        {'close':39350,'date':42228,'markup':0.0120884773662551},        {'close':39580,'date':42229,'markup':0.0169578622816033},        {'close':39250,'date':42230,'markup':-0.00933871781928319},        {'close':39150,'date':42233,'markup':-0.00684931506849315},        {'close':38790,'date':42234,'markup':-0.0104591836734694},        {'close':38750,'date':42235,'markup':-0.00564536823197331},        {'close':38620,'date':42236,'markup':0.00416016640665627},        {'close':38940,'date':42237,'markup':0.00985477178423236},        {'close':38280,'date':42240,'markup':-0.0189646335212711},        {'close':38820,'date':42241,'markup':0.0127837203235064},        {'close':38840,'date':42242,'markup':0.00752269779507134},        {'close':38740,'date':42243,'markup':-0.0127420998980632},        {'close':39280,'date':42244,'markup':0.0186721991701245},        {'close':39200,'date':42247,'markup':-0.00127388535031847},        {'close':39150,'date':42248,'markup':-0.00330957230142566},        {'close':39010,'date':42249,'markup':-0.00510073960724305},        {'close':39370,'date':42254,'markup':0.00793650793650794},        {'close':39530,'date':42255,'markup':0.00687722873153337},        {'close':41140,'date':42256,'markup':0.0444275196750444},        {'close':41060,'date':42257,'markup':0.00587947084762371},        {'close':41160,'date':42258,'markup':0.00512820512820513},        {'close':40620,'date':42261,'markup':-0.012399708242159},        {'close':40320,'date':42262,'markup':-0.0134573036457059},        {'close':40950,'date':42263,'markup':0.0108615156751419},        {'close':40990,'date':42264,'markup':0.00861220472440945},        {'close':40710,'date':42265,'markup':-0.00852411105698977},        {'close':40340,'date':42268,'markup':-0.0141739980449658},        {'close':39920,'date':42269,'markup':-0.00572851805728518},        {'close':38930,'date':42270,'markup':-0.0311100049776008},        {'close':38850,'date':42271,'markup':0.00491464045525091},        {'close':39000,'date':42272,'markup':0.00386100386100386},        {'close':38170,'date':42275,'markup':-0.0187660668380463},        {'close':37640,'date':42276,'markup':-0.0248704663212435},        {'close':38370,'date':42277,'markup':0.0156167284277395},        {'close':38920,'date':42285,'markup':0.0220588235294118},        {'close':40090,'date':42286,'markup':0.0237487231869254},        {'close':40150,'date':42289,'markup':0.0144012127337039},        {'close':39750,'date':42290,'markup':-0.00823353293413174},        {'close':39630,'date':42291,'markup':-0.00352024138798089},        {'close':40020,'date':42292,'markup':0.00780659783429867},        {'close':39540,'date':42293,'markup':-0.0112528132033008},        {'close':39380,'date':42296,'markup':-0.0117942283563363},        {'close':39200,'date':42297,'markup':-0.00759493670886076},        {'close':38910,'date':42298,'markup':-0.00485933503836317},        {'close':39270,'date':42299,'markup':0.00511901714870745},        {'close':39700,'date':42300,'markup':0.0163850486431132},        {'close':39060,'date':42303,'markup':-0.0108888326158521},        {'close':39310,'date':42304,'markup':0.00485685071574642},        {'close':38930,'date':42305,'markup':-0.00409311844461499},        {'close':39030,'date':42306,'markup':-0.00153491941673062},        {'close':38770,'date':42307,'markup':-0.00742447516641065},        {'close':38500,'date':42310,'markup':-0.0046535677352637},        {'close':38420,'date':42311,'markup':-0.00207792207792208},        {'close':38830,'date':42312,'markup':0.00857142857142857},        {'close':38220,'date':42313,'markup':-0.00804567869192837},        {'close':38030,'date':42314,'markup':-0.015022015022015},        {'close':37620,'date':42317,'markup':-0.00947867298578199},        {'close':37570,'date':42318,'markup':-0.00739762219286658},        {'close':37100,'date':42319,'markup':-0.00961025093432995},        {'close':37310,'date':42320,'markup':-0.000535762121618002},        {'close':36230,'date':42321,'markup':-0.0292068595927117},        {'close':36030,'date':42324,'markup':-0.0123355263157895},        {'close':34970,'date':42325,'markup':-0.0353103448275862},        {'close':34880,'date':42326,'markup':-0.00852757248436612},        {'close':34770,'date':42327,'markup':-0.00429553264604811},        {'close':34910,'date':42328,'markup':0.0066320645905421},        {'close':33510,'date':42331,'markup':-0.0362381363244176},        {'close':33850,'date':42332,'markup':-0.00558166862514689},        {'close':34620,'date':42333,'markup':0.031277926720286},        {'close':35140,'date':42334,'markup':0.0194371917609516},        {'close':35350,'date':42335,'markup':0.00942318675042833},        {'close':34740,'date':42338,'markup':-0.0130681818181818},        {'close':35080,'date':42339,'markup':0.00804597701149425},        {'close':34890,'date':42340,'markup':-0.00114514743773261},        {'close':34390,'date':42341,'markup':-0.0207858769931663},        {'close':34610,'date':42342,'markup':-0.00545977011494253},        {'close':35330,'date':42345,'markup':0.0216888374783112},        {'close':34710,'date':42346,'markup':-0.00885208452312964},        {'close':35010,'date':42347,'markup':0.00516795865633075},        {'close':34920,'date':42348,'markup':0.00200860832137733},        {'close':35960,'date':42349,'markup':0.0236265300313123},        {'close':36130,'date':42352,'markup':0.0206214689265537},        {'close':35620,'date':42353,'markup':-0.0122018857459789},        {'close':35450,'date':42354,'markup':-0.0144564915207117},        {'close':35140,'date':42355,'markup':-0.00874471086036671},        {'close':35810,'date':42356,'markup':0.0101551480959097},        {'close':36240,'date':42359,'markup':0.023728813559322},        {'close':36350,'date':42360,'markup':0.00916157690172127},        {'close':36380,'date':42361,'markup':0.000825309491059147},        {'close':36170,'date':42362,'markup':-0.000828729281767956},        {'close':36340,'date':42363,'markup':0.00110192837465565},        {'close':35740,'date':42366,'markup':-0.0143408714837286},        {'close':36190,'date':42367,'markup':0.00249307479224377},        {'close':36370,'date':42368,'markup':0.015071169411108},        {'close':36560,'date':42369,'markup':0.00384404173531027},        {'close':35970,'date':42373,'markup':-0.0150602409638554},        {'close':36510,'date':42374,'markup':0.0127600554785021},        {'close':36240,'date':42375,'markup':0.00332225913621262},        {'close':36090,'date':42376,'markup':-0.00633259911894273},        {'close':35680,'date':42377,'markup':-0.0154525386313466},        {'close':34770,'date':42380,'markup':-0.0257775287195293},        {'close':34630,'date':42381,'markup':-0.0195356738391846},        {'close':34810,'date':42382,'markup':-0.00229292060762396},        {'close':34930,'date':42383,'markup':0.00287108814240597},        {'close':34800,'date':42384,'markup':0.00143884892086331},        {'close':34990,'date':42387,'markup':-0.000571265352756355},        {'close':35360,'date':42388,'markup':0.0140521938629194},        {'close':35080,'date':42389,'markup':-0.00255899914700028},        {'close':34850,'date':42390,'markup':-0.0102243680772508},        {'close':35190,'date':42391,'markup':0.00456751355980588},        {'close':35020,'date':42394,'markup':-0.00426499857833381},        {'close':35100,'date':42395,'markup':-0.00113830392714855},        {'close':35780,'date':42396,'markup':0.0219937160811197},        {'close':35600,'date':42397,'markup':0.00168823860438942},        {'close':35680,'date':42398,'markup':-0.00167879127028539},        {'close':35540,'date':42401,'markup':-0.00252596126859388},        {'close':35760,'date':42402,'markup':0.00280426247896803},        {'close':35810,'date':42403,'markup':0.00448807854137447},        {'close':36500,'date':42404,'markup':0.0226954328943682},        {'close':36510,'date':42405,'markup':0.00828500414250207},        {'close':35750,'date':42415,'markup':-0.0189352360043908},        {'close':35750,'date':42416,'markup':-0.000559127760693318},        {'close':35480,'date':42417,'markup':-0.00866163732886281},        {'close':35700,'date':42418,'markup':0.00140252454417952},        {'close':35920,'date':42419,'markup':0.00644438217988232},        {'close':36350,'date':42422,'markup':0.0167832167832168},        {'close':36200,'date':42423,'markup':0.00416088765603329},        {'close':35810,'date':42424,'markup':-0.0143132397467658},        {'close':35920,'date':42425,'markup':-0.00194498471797722},        {'close':35840,'date':42426,'markup':-0.00472091085809497},        {'close':35880,'date':42429,'markup':0.00251466890192791},        {'close':36010,'date':42430,'markup':-0.00359712230215827},        {'close':36940,'date':42431,'markup':0.0292560601838952},        {'close':37000,'date':42432,'markup':0.0156464452374417},        {'close':37950,'date':42433,'markup':0.0265079794427915},        {'close':38090,'date':42436,'markup':0.0151918976545842},        {'close':37750,'date':42437,'markup':-0.0120387333158859},        {'close':37320,'date':42438,'markup':-0.0178947368421053},        {'close':37300,'date':42439,'markup':0.00295778435063189},        {'close':37710,'date':42440,'markup':0.00774986638161411},        {'close':37750,'date':42443,'markup':0.0101685844260102},        {'close':37250,'date':42444,'markup':-0.0137675403759598},        {'close':37570,'date':42445,'markup':0.00589022757697456},        {'close':37940,'date':42446,'markup':0.015524625267666},        {'close':38380,'date':42447,'markup':0.0174973488865323},        {'close':38160,'date':42450,'markup':-0.00313479623824451},        {'close':38150,'date':42451,'markup':-0.00104739460591778},        {'close':38160,'date':42452,'markup':-0.00235294117647059},        {'close':37630,'date':42453,'markup':-0.0156944807742611},        {'close':37750,'date':42454,'markup':0.00265604249667995},        {'close':37510,'date':42457,'markup':-0.00292397660818713},        {'close':37590,'date':42458,'markup':-0.00344644750795334},        {'close':36990,'date':42459,'markup':-0.0201324503311258},        {'close':36860,'date':42460,'markup':-0.0107353730542136},        {'close':37120,'date':42461,'markup':0.00623475196530225},        {'close':36730,'date':42465,'markup':-0.0072972972972973},        {'close':36730,'date':42466,'markup':0.000817438692098093},        {'close':36650,'date':42467,'markup':-0.00163443203486788},        {'close':35760,'date':42468,'markup':-0.0264089300299483},        {'close':35830,'date':42471,'markup':-0.00111513799832729},        {'close':35980,'date':42472,'markup':0.00167037861915367},        {'close':36830,'date':42473,'markup':0.0264771460423634},        {'close':36850,'date':42474,'markup':0.00408719346049046},        {'close':36780,'date':42475,'markup':-0.00487012987012987},        {'close':36610,'date':42478,'markup':-0.0102730467693971},        {'close':36940,'date':42479,'markup':0.00325909831613254},        {'close':37360,'date':42480,'markup':0.0121918179355188},        {'close':38100,'date':42481,'markup':0.018716577540107},        {'close':37970,'date':42482,'markup':0.00582781456953642},        {'close':38120,'date':42485,'markup':0.00447957839262187},        {'close':37710,'date':42486,'markup':-0.0159185803757829},        {'close':37630,'date':42487,'markup':-0.00581241743725231},        {'close':37280,'date':42488,'markup':-0.0116648992576882},        {'close':37660,'date':42489,'markup':0.0101931330472103},        {'close':37910,'date':42493,'markup':0.0103944562899787},        {'close':37230,'date':42494,'markup':-0.0119426751592357},        {'close':36840,'date':42495,'markup':-0.0136546184738956},        {'close':36620,'date':42496,'markup':-0.0118726389638424},        {'close':35840,'date':42499,'markup':-0.0202296336796063},        {'close':35950,'date':42500,'markup':-0.00882271850013785},        {'close':35960,'date':42501,'markup':0.00250906049623641},        {'close':36240,'date':42502,'markup':0.0089086859688196},        {'close':35480,'date':42503,'markup':-0.0185338865836791},        {'close':35610,'date':42506,'markup':0.00140607424071991},        {'close':35900,'date':42507,'markup':0.012979683972912},        {'close':35380,'date':42508,'markup':-0.0109029913335197},        {'close':35200,'date':42509,'markup':-0.0109581343073897},        {'close':35320,'date':42510,'markup':-0.00113122171945701},        {'close':35170,'date':42513,'markup':-0.000852272727272727},        {'close':35190,'date':42514,'markup':0.00113798008534851},        {'close':35490,'date':42515,'markup':0.00795228628230616},        {'close':36060,'date':42516,'markup':0.0157746478873239},        {'close':35840,'date':42517,'markup':0},        {'close':35710,'date':42520,'markup':-0.00418293363078639},        {'close':35750,'date':42521,'markup':-0.000559127760693318},        {'close':35190,'date':42522,'markup':-0.0170391061452514},        {'close':35280,'date':42523,'markup':-0.0056369785794814},        {'close':35720,'date':42524,'markup':0.0124716553287982},        {'close':36260,'date':42527,'markup':0.0237154150197628},        {'close':35840,'date':42528,'markup':-0.00665188470066519},        {'close':35230,'date':42529,'markup':-0.0224750277469478},        {'close':35250,'date':42534,'markup':-0.000567054153671676},        {'close':35110,'date':42535,'markup':-0.00481859410430839},        {'close':35320,'date':42536,'markup':0},        {'close':35410,'date':42537,'markup':0.00682399772533409},        {'close':35560,'date':42538,'markup':-0.00364247688428131},        {'close':35460,'date':42541,'markup':0.00367959241437872},        {'close':35570,'date':42542,'markup':0.00281928390188892},        {'close':36260,'date':42543,'markup':0.0162556053811659},        {'close':36270,'date':42544,'markup':0.010587907495124},        {'close':35970,'date':42545,'markup':-0.00635359116022099},        {'close':36720,'date':42548,'markup':0.0121278941565601},        {'close':37200,'date':42549,'markup':0.021978021978022},        {'close':37220,'date':42550,'markup':0.00949281258475725},        {'close':37530,'date':42551,'markup':0.0072463768115942},        {'close':37300,'date':42552,'markup':-0.00453696290365626},        {'close':38410,'date':42555,'markup':0.0275548421615837},        {'close':37790,'date':42556,'markup':-0.0065720294426919},        {'close':37380,'date':42557,'markup':-0.0131995776135164},        {'close':36910,'date':42558,'markup':-0.0128376571275742},        {'close':36620,'date':42559,'markup':-0.0116059379217274},        {'close':37020,'date':42562,'markup':0.00926935659760087},        {'close':37180,'date':42563,'markup':0.0103260869565217},        {'close':38580,'date':42564,'markup':0.0410145709660011},        {'close':38640,'date':42565,'markup':0.0075619295958279},        {'close':38500,'date':42566,'markup':0.000779828437743696},        {'close':37850,'date':42569,'markup':-0.0148360229047371},        {'close':38300,'date':42570,'markup':0.00183102275699712},        {'close':38280,'date':42571,'markup':0.00104602510460251},        {'close':38650,'date':42572,'markup':0.00494019760790432},        {'close':38180,'date':42573,'markup':-0.00572916666666667},        {'close':38160,'date':42576,'markup':-0.0078003120124805},        {'close':37810,'date':42577,'markup':-0.00969093766369827},        {'close':37740,'date':42578,'markup':-0.00185136207352552},        {'close':37820,'date':42579,'markup':-0.00184745315386646},        {'close':37470,'date':42580,'markup':-0.00610079575596817},        {'close':38280,'date':42583,'markup':0.0124305739222428},        {'close':38020,'date':42584,'markup':0.00105318588730911},        {'close':37790,'date':42585,'markup':-0.00395361096468108},        {'close':37620,'date':42586,'markup':-0.0113009198423127},        {'close':37620,'date':42587,'markup':-0.000796812749003984},        {'close':37540,'date':42590,'markup':0},        {'close':37220,'date':42591,'markup':-0.00773127166089043},        {'close':37470,'date':42592,'markup':0},        {'close':37530,'date':42593,'markup':0.00481927710843374},        {'close':37560,'date':42594,'markup':-0.00106382978723404},        {'close':37070,'date':42597,'markup':-0.0133084908171413},        {'close':37220,'date':42598,'markup':0.000268744961031981},        {'close':37220,'date':42599,'markup':0.00161463939720129},        {'close':37370,'date':42600,'markup':0.00241416309012876},        {'close':37390,'date':42601,'markup':0.0042976094547408},        {'close':37140,'date':42604,'markup':-0.00508974015537102},        {'close':37120,'date':42605,'markup':-0.00348993288590604},        {'close':36650,'date':42606,'markup':-0.011863035858722},        {'close':36370,'date':42607,'markup':-0.0124898180830844},        {'close':36430,'date':42608,'markup':0.00275254610514726},        {'close':36420,'date':42611,'markup':0.00192572214580468},        {'close':36260,'date':42612,'markup':-0.00302447071762442},        {'close':36270,'date':42613,'markup':-0.00329760923330585},        {'close':36530,'date':42614,'markup':0.00689084895259096},        {'close':36670,'date':42615,'markup':0.00603566529492455},        {'close':36510,'date':42618,'markup':-0.000547495209416918},        {'close':36570,'date':42619,'markup':0.000547195622435021},        {'close':36750,'date':42620,'markup':0.00629791894852136},        {'close':36570,'date':42621,'markup':-0.00245499181669394},        {'close':36620,'date':42622,'markup':-0.0010911074740862},        {'close':36170,'date':42625,'markup':-0.0122883670125614},        {'close':36600,'date':42626,'markup':0.0066006600660066},        {'close':36730,'date':42627,'markup':0.0068530701754386},        {'close':37230,'date':42632,'markup':0.0161026200873362},        {'close':37280,'date':42633,'markup':0.00458097547830773},        {'close':37300,'date':42634,'markup':0.00161117078410312},        {'close':37650,'date':42635,'markup':0.00857219394588803},        {'close':37860,'date':42636,'markup':0.00986929847959456},        {'close':37760,'date':42639,'markup':-0.00026476039184538},        {'close':37680,'date':42640,'markup':-0.00238284352660842},        {'close':37520,'date':42641,'markup':-0.00318809776833156},        {'close':37650,'date':42642,'markup':0.00534045393858478},        {'close':37710,'date':42643,'markup':-0.00185283218634198},        {'close':37650,'date':42653,'markup':-0.00106128946670204},        {'close':38160,'date':42654,'markup':0.0162450066577896},        {'close':37950,'date':42655,'markup':-0.00131578947368421},        {'close':37630,'date':42656,'markup':-0.00764767932489452},        {'close':37370,'date':42657,'markup':-0.0129424194400423},        {'close':37320,'date':42660,'markup':0.000536193029490617},        {'close':37400,'date':42661,'markup':0.00375738056897477},        {'close':37190,'date':42662,'markup':-0.0026816840976133},        {'close':37310,'date':42663,'markup':0.00107324926214113},        {'close':37180,'date':42664,'markup':-0.00161117078410312},        {'close':37350,'date':42667,'markup':0.00592512792889846},        {'close':38010,'date':42668,'markup':0.0198551113496109},        {'close':37760,'date':42669,'markup':-0.000529380624669137},        {'close':37820,'date':42670,'markup':-0.00290007909306617},        {'close':38270,'date':42671,'markup':0.0118984664198837},        {'close':38390,'date':42674,'markup':0.00681877786519801},        {'close':38740,'date':42675,'markup':0.00832899531494014},        {'close':38580,'date':42676,'markup':-0.00206932229694775},        {'close':38990,'date':42677,'markup':0.00437918598660484},        {'close':39130,'date':42678,'markup':0.00850515463917526},        {'close':40380,'date':42681,'markup':0.0303648890022965},        {'close':40450,'date':42682,'markup':0.0142928786359077},        {'close':41600,'date':42683,'markup':0.0304681694327471},        {'close':43910,'date':42684,'markup':0.0598600048274197},        {'close':46700,'date':42685,'markup':0.0868047474982546},        {'close':45520,'date':42688,'markup':0.00419148466799029},        {'close':43670,'date':42689,'markup':-0.0429541968003506},        {'close':44580,'date':42690,'markup':-0.00801068090787717},        {'close':43670,'date':42691,'markup':-0.0113199003848766},        {'close':44210,'date':42692,'markup':0.00729095465937571},        {'close':45120,'date':42695,'markup':0.0212765957446809},        {'close':46210,'date':42696,'markup':0.0384269662921348},        {'close':45760,'date':42697,'markup':0.00328875246656435},        {'close':48210,'date':42698,'markup':0.0535402097902098},        {'close':48100,'date':42699,'markup':0.0166983724371169},        {'close':49580,'date':42702,'markup':0.0273518441773726},        {'close':46750,'date':42703,'markup':-0.0424006554690701},        {'close':46100,'date':42704,'markup':-0.0385818561001043},        {'close':47060,'date':42705,'markup':0.0181739506707053},        {'close':46630,'date':42706,'markup':-0.00766120451159821},        {'close':47360,'date':42709,'markup':0.0152197213290461},        {'close':47690,'date':42710,'markup':0.0166275847367299},        {'close':48350,'date':42711,'markup':0.00834202294056309},        {'close':47210,'date':42712,'markup':-0.015021906947632},        {'close':47390,'date':42713,'markup':-0.00294550810014728},        {'close':47230,'date':42716,'markup':0.00276008492569002},        {'close':46920,'date':42717,'markup':-0.0163522012578616},        {'close':46490,'date':42718,'markup':-0.00937566588536118},        {'close':46790,'date':42719,'markup':0.00537172324881822},        {'close':46460,'date':42720,'markup':-0.00471293916023993},        {'close':45630,'date':42723,'markup':-0.0216552315608919},        {'close':44890,'date':42724,'markup':-0.0260360164894771},        {'close':45330,'date':42725,'markup':0.00800533689126084},        {'close':44430,'date':42726,'markup':-0.0157288435976961},        {'close':45070,'date':42727,'markup':0.0058022762776166},        {'close':44070,'date':42730,'markup':-0.0162946428571429},        {'close':44600,'date':42731,'markup':0.00882153358968559},        {'close':45620,'date':42732,'markup':0.0288678394226432},        {'close':45810,'date':42733,'markup':0.00614979134636503},        {'close':45500,'date':42734,'markup':-0.00153609831029186},        {'close':45760,'date':42738,'markup':0.00726392251815981},        {'close':45520,'date':42739,'markup':-0.0112945264986968},        {'close':45760,'date':42740,'markup':0.00881834215167548},        {'close':45350,'date':42741,'markup':-0.0109051254089422},        {'close':45730,'date':42744,'markup':0.00660356592559982},        {'close':46110,'date':42745,'markup':0.0140752144270948},        {'close':47160,'date':42746,'markup':0.0301441677588467},        {'close':46980,'date':42747,'markup':0.000638977635782748},        {'close':47400,'date':42748,'markup':0.00872526069376463},        {'close':47950,'date':42751,'markup':0.00947368421052632},        {'close':46780,'date':42752,'markup':-0.0233820459290188},        {'close':46600,'date':42753,'markup':-0.0152155536770921},        {'close':46730,'date':42754,'markup':0.00386680988184748},        {'close':46080,'date':42755,'markup':-0.0113709504398198},        {'close':46850,'date':42758,'markup':0.00926324859974149},        {'close':47070,'date':42759,'markup':0.00598418465484078},        {'close':47650,'date':42760,'markup':0.0166417751226798},        {'close':48040,'date':42761,'markup':0.00903171602604495},        {'close':46780,'date':42769,'markup':-0.0217482225010456},        {'close':46600,'date':42772,'markup':-0.00682011935208866},        {'close':46850,'date':42773,'markup':0.00536480686695279},        {'close':47660,'date':42774,'markup':0.0181585131382183},        {'close':47590,'date':42775,'markup':0.00890396438414246},        {'close':47820,'date':42776,'markup':0.00293624161073826},        {'close':50120,'date':42779,'markup':0.0536052133697709},        {'close':50110,'date':42780,'markup':0.0113017154389506},        {'close':48740,'date':42781,'markup':-0.0240288346015218},        {'close':48680,'date':42782,'markup':-0.00895765472312704},        {'close':48360,'date':42783,'markup':-0.0124566060853584},        {'close':48770,'date':42786,'markup':0.00349794238683128},        {'close':48920,'date':42787,'markup':0.0103263114415531},        {'close':48660,'date':42788,'markup':-0.00795107033639144},        {'close':48390,'date':42789,'markup':-0.0104294478527607},        {'close':47760,'date':42790,'markup':-0.0166769610870908},        {'close':47730,'date':42793,'markup':-0.000628140703517588},        {'close':47740,'date':42794,'markup':-0.00271568832254021},        {'close':48650,'date':42795,'markup':0.0171440518503032},        {'close':48690,'date':42796,'markup':0.00786586628027324},        {'close':48280,'date':42797,'markup':-0.00882775610757545},        {'close':47890,'date':42800,'markup':-0.00539979231568017},        {'close':47720,'date':42801,'markup':-0.00893042575285566},        {'close':47300,'date':42802,'markup':-0.00713685978169605},        {'close':46570,'date':42803,'markup':-0.0177177810588483},        {'close':46650,'date':42804,'markup':-0.00681285927187567},        {'close':47560,'date':42807,'markup':0.0214776632302405},        {'close':47360,'date':42808,'markup':0.00723096554657592},        {'close':47670,'date':42809,'markup':0.00654560810810811},        {'close':48160,'date':42810,'markup':0.015177065767285},        {'close':47740,'date':42811,'markup':-0.00500208420175073},        {'close':47980,'date':42814,'markup':0.000834376303712975},        {'close':47290,'date':42815,'markup':-0.0160216396171452},        {'close':46660,'date':42816,'markup':-0.0209819555182543},        {'close':47120,'date':42817,'markup':0.00511945392491468},        {'close':47100,'date':42818,'markup':0.00298126064735946},        {'close':46260,'date':42821,'markup':-0.0159540523292916},        {'close':46740,'date':42822,'markup':0.00429737859905458},        {'close':47530,'date':42823,'markup':0.0259011439671919},        {'close':47460,'date':42824,'markup':0.00423190859077444},        {'close':47750,'date':42825,'markup':0.0056866048862679},        {'close':47420,'date':42830,'markup':-0.00857202592515158},        {'close':47810,'date':42831,'markup':0.0103550295857988},        {'close':47130,'date':42832,'markup':-0.0168961201501877},        {'close':47050,'date':42835,'markup':-0.012384550797649},        {'close':46580,'date':42836,'markup':-0.0116698493528538},        {'close':46230,'date':42837,'markup':-0.0111229946524064},        {'close':46480,'date':42838,'markup':-0.00321681321037958},        {'close':46110,'date':42839,'markup':0.00152041702867072},        {'close':46480,'date':42842,'markup':0.00693240901213172},        {'close':45850,'date':42843,'markup':-0.0163055138382321},        {'close':45840,'date':42844,'markup':-0.00972132209980557},        {'close':45560,'date':42845,'markup':-0.00153407845715538},        {'close':46030,'date':42846,'markup':0.0132071318511996},        {'close':45910,'date':42849,'markup':0.00305877212147695},        {'close':46030,'date':42850,'markup':0.00590034965034965},        {'close':46230,'date':42851,'markup':0.00762859633827376},        {'close':46290,'date':42852,'markup':0.00129785853341986},        {'close':46330,'date':42853,'markup':0.000431872165838912},        {'close':46790,'date':42857,'markup':0.0121133463119187},        {'close':46580,'date':42858,'markup':-0.00618732664817581},        {'close':45180,'date':42859,'markup':-0.0323409723709574},        {'close':44980,'date':42860,'markup':-0.0125137211855104},        {'close':44670,'date':42863,'markup':-0.00755387691624084},        {'close':44730,'date':42864,'markup':-0.0077639751552795},        {'close':44860,'date':42865,'markup':0.00357941834451902},        {'close':45270,'date':42866,'markup':0.00711902113459399},        {'close':44930,'date':42867,'markup':-0.000222518914107699},        {'close':45430,'date':42870,'markup':0.00888296691094826},        {'close':45170,'date':42871,'markup':-0.000663716814159292},        {'close':45390,'date':42872,'markup':0.00220799293442261},        {'close':44960,'date':42873,'markup':-0.00990971151728694},        {'close':45250,'date':42874,'markup':0.00265898515399956}    ]}

给定一个序列和一个目标值,从这个序列中找到这个目标值的位置。

 
  

import numpy as npimport tensorflow as tfclass LinearSearch():    def __init__(self, array, x):        self.x = tf.constant(x)        self.array = tf.constant(array)        self.length = len(array)        self.graph = tf.while_loop(self.cond, self.body, [0, self.x, False])    def run(self):        with tf.Session() as sess:            tf.global_variables_initializer().run()            return sess.run(self.graph)    def cond(self, i, _, is_found):        return tf.logical_and(tf.less(i, self.length), tf.logical_not(is_found))    def body(self, i, _, is_found):        return tf.cond(tf.equal(self.array[i], self.x),                    lambda: (i, self.array[i], True),                    lambda: (tf.add(i, 1), -1, False))if __name__ == '__main__':    array, x = [1, 22, 33, 1, 7, 3, 8], 3    search = LinearSearch(array, x)    ix, xx, is_found = search.run()    print('Array :', array)    print('Number to search :', x)    if is_found:        print('{} is at index {}.'.format(xx, ix))    else:        print('Not found.')

输出结果:

 
  

Array : [1, 22, 33, 1, 7, 3, 8]Number to search : 33 is at index 5.

2.3 冒泡排序

给定一个数组,利用冒泡排序进行排序,最后输出排好序的数组。冒泡排序算法可以查看这个文档(https://en.wikipedia.org/wiki/Bubble_sort)。

 
  

import numpy as npimport tensorflow as tfclass BubbleSort():    def __init__(self, array):        self.i = tf.constant(0)        self.j = tf.constant(len(array)-1)        self.array = tf.Variable(array, trainable=False)        self.length = len(array)        cond = lambda i, j, _: tf.less(i-1, self.length-1)        self.graph = tf.while_loop(cond, self.outer_loop, loop_vars=[self.i, self.j, self.array])    def run(self):        with tf.Session() as sess:            tf.global_variables_initializer().run()            return sess.run(self.graph)    def outer_loop(self, i, j, _):        cond = lambda i, j, _: tf.greater(j, i)        loop = tf.while_loop(cond, self.inner_loop, loop_vars=[i, self.length-1, self.array])        return tf.add(i, 1), loop[1], loop[2]    def inner_loop(self, i, j, _):        body = tf.cond(tf.greater(self.array[j-1], self.array[j]),                    lambda: tf.scatter_nd_update(self.array, [[j-1],[j]], [self.array[j],self.array[j-1]]),                    lambda: self.array)        return i, tf.subtract(j, 1), bodyif __name__ == '__main__':    x = np.array([1.,7.,3.,8.])    _, _, sorted_array = BubbleSort(x).run()    print(x)    print(sorted_array)

输出结果:

 
  

[ 1.  7.  3.  8.][ 1.  3.  7.  8.]

TensorFlow 还有更多的实现算法,你可以查看这个 Github(https://github.com/akimach/EsotericTensorFlow)。

你可能感兴趣的:(利用 TensorFlow 实现排序和搜索算法)